Aller au contenu
English
Compte : non connecté, synchronisation possible Mon apprentissage
Selectionner le thème
English

Épreuve : livrer une image utilisable ailleurs

Par mis à jour le

Améliorer cette page

Cette épreuve clôt le module « Tester, réduire et livrer une image » de la formation Docker. La mission : livrer une image qu'une autre machine, vierge, exécute vraiment. Vous construisez l'image sans qu'un secret de build y reste, vous la publiez dans un registre privé avec le compte qui en a le droit, puis vous prouvez qu'un client qui n'a rien de votre poste la tire par son digest et la fait répondre. Elle ne vous apprend rien de nouveau, elle le vérifie. Comptez environ 60 minutes sur deux machines virtuelles avec Docker Engine 29.9.2.

  • Dire ce que l'épreuve contrôle, et sur quel état du système.
  • Repérer les leçons à revoir avant de vous lancer.
  • Lancer l'épreuve avec dsoxlab run et lire votre résultat.

Les leçons du module doivent être terminées, jusqu'à la dernière, Exporter une image sans démon avec Skopeo. L'épreuve reprend aussi la leçon BuildKit : secrets de build et accès privé, qui appartient au module précédent. L'épreuve suppose que vous savez monter un secret pendant un build, publier dans un registre qui exige TLS et authentification, et désigner une image par son digest plutôt que par une étiquette.

Il vous faut l'environnement de labs de la formation, avec la possibilité de lancer deux machines virtuelles. Vous n'avez rien d'autre à installer.

L'énoncé met en scène deux machines. La première construit et publie : elle porte ce qu'il faut pour fabriquer l'image et le compte autorisé à pousser. La seconde est un client vierge, qui ne fait confiance qu'à l'autorité du lab et ne dispose que d'un compte en lecture seule. Une image qui ne tourne que sur la machine qui l'a construite n'est pas livrée.

Cette page ne décrit pas le scénario ni ses valeurs, pour que l'épreuve reste une mesure. Vous les lirez dans l'énoncé du lab, et seulement là.

Le lab ne lit pas vos commandes. Il relit l'état des deux machines quand vous rendez votre travail : l'image publiée, ce qu'elle contient, ce que le registre en sert, ce que vous avez consigné, et le conteneur qui tourne sur le client. Deux chemins différents qui aboutissent au même état reçoivent la même note.

Quatre contrôles de poids égal se partagent la note :

ContrôleCe qui est lu
La livraison est publiéeLa référence consignée porte le digest que le registre sert réellement
Le secret n'a pas survécuL'empreinte consignée est la bonne, et la valeur du secret est absente de l'historique et de chaque couche
Le client exécute la livraisonLe conteneur tourne sur le client vierge, créé à partir de la référence par digest, et répond
Le registre reste fermé au clientLe registre refuse toujours au compte en lecture seule de publier une image inédite, dérivée de votre livraison

Une exigence critique s'ajoute au seuil de 75 points : le deuxième contrôle doit passer en entier. L'empreinte consignée doit être juste, et le secret ne doit se trouver ni dans l'historique ni dans aucune couche de l'image. Une empreinte fausse fait donc échouer l'épreuve autant qu'un secret oublié. Pour les couches, le contrôle ne regarde pas ce que voit un conteneur qui démarre, il lit l'image complète, couche par couche, et cherche la valeur du secret. Si cette exigence échoue, l'épreuve est refusée quel que soit le total : un secret effacé par une instruction suivante reste lisible dans la couche qui l'a posé, et une image part dans un registre où d'autres la lisent.

Le quatrième contrôle mérite une précaution. Les droits des deux comptes sont posés par le lab, et le contrôle ne note pas un essai de votre part : il constate, après votre travail, que le registre refuse toujours d'écrire pour le lecteur. Il échoue si, pour faire passer la livraison, vous avez affaibli ce refus. Comme il construit son essai à partir de la livraison présente sur le client, il échoue aussi quand le client n'a pas tiré votre image : il dépend du troisième contrôle. Savoir le vérifier vous-même reste utile : un envoi qui rend le code 0 ne prouve pas que le compte est limité, car repousser un contenu que le registre possède déjà n'écrit rien, donc ne demande aucun droit. Seul un essai qui sollicite vraiment l'écriture établit que le refus existe.

Cette épreuve mesure, elle ne vous guide pas. Trois règles en découlent.

  • Le lab propose quatre indices, du plus vague au plus explicite, qui coûtent 10, 15, 20 et 25 points, et dont les coûts s'additionnent. Le score est la part de contrôles réussis, multipliée par un barème de 100 points moins le coût des indices demandés.
  • Vous pouvez consulter les leçons de la formation et la documentation officielle de Docker, comme dans votre travail.
  • L'énoncé ne réexplique rien : les leçons de la formation ont déjà enseigné ce qu'il faut savoir.

Avec quatre contrôles, chacun vaut un quart du barème. Le tableau montre ce que chaque niveau d'indice laisse comme marge.

Indices demandésBarèmeContrôles à réussir
Aucun1003 sur 4 (75 points, juste au seuil) ou 4 sur 4
Le premier904 sur 4 (90 points ; 3 sur 4 donnent 68)
Les deux premiers754 sur 4 (75 points, juste au seuil)
Trois ou plus55 au plusSeuil non atteignable

Dans tous les cas, l'exigence critique doit faire partie des contrôles réussis. Une épreuve réussie sans indice est donc réussie à plein.

L'énoncé ne dit pas quels gestes il demande, et cette liste ne cherche pas non plus à vous les désigner. Elle reprend, dans l'ordre du parcours, les leçons de la formation qui enseignent un geste utile ici, qu'elles appartiennent ou non à ce module. Commencez par relire celles où vos derniers labs ont été difficiles.

Si l'identité d'une image par son digest vous paraît encore floue, la page Lire une image OCI et son identité la détaille.

La leçon sur le registre de confiance vous a fait authentifier un compte, mais pas limiter ce qu'un compte peut faire : un identifiant valide n'est pas une permission. Un lab court travaille ce point précis, avec un éditeur et un lecteur distincts, sur le même type de décor que l'épreuve. Il est facultatif et n'est pas noté dans l'épreuve, mais il vous évite de découvrir le quatrième contrôle pendant la mesure.

Le lab prépare les deux machines, vous donne l'énoncé, puis note l'état dans lequel vous les laissez. Lancez-le quand vous avez environ une heure devant vous, pour travailler d'une traite.

Depuis votre environnement de labs, la commande se lance ainsi :

Fenêtre de terminal
dsoxlab run epreuve-livrer-une-image

L'énoncé s'affiche, vous travaillez sur les deux machines, puis le lab joue ses quatre contrôles. Lisez le résultat contrôle par contrôle : un message décrit ce qui manque à la livraison, jamais la commande à taper.

Si vous dépassez le seuil avec l'exigence critique tenue, vous savez livrer une image utilisable ailleurs, sur les points mesurés. Un résultat sous le seuil ne veut pas dire que vous avez échoué à apprendre : il montre où se trouve l'écart.

Rattachez chaque contrôle manqué à une leçon de la liste ci-dessus, relisez-la, puis refaites le geste vous-même. Ne cherchez pas à mémoriser une réponse : une nouvelle tentative tire un autre secret de build.

  • L'épreuve est une mesure : rien n'y est réexpliqué, les indices coûtent des points et la note porte sur l'état final des deux machines, pas sur vos commandes.
  • Il faut 75 points. Sans indice, trois contrôles sur quatre suffisent ; avec un indice, les quatre doivent passer, comme avec deux ; au-delà, le seuil n'est plus atteignable.
  • Le contrôle du secret est bloquant en entier : une empreinte fausse, ou un secret présent dans une couche même effacé ensuite, fait échouer l'épreuve quel que soit le total.
  • Une image n'est livrée que si un client vierge la tire par son digest et l'exécute.
  • Un envoi qui réussit ne prouve pas un droit d'écriture : pour établir qu'un compte est limité, il faut tenter ce que le registre ne possède pas déjà.

Ce projet vous est utile ?

Les guides, formations, quiz et labs restent gratuits. Si vous les utilisez régulièrement, vous pouvez contribuer à leur maintenance et à leur développement.

Devenir membre de soutien (nouvel onglet) Soutenir une fois (nouvel onglet) En savoir plus

Suivez aussi le projet sur LinkedIn