Laboratoire sur Docker
Exercice 6
Authentifier une image Docker, utilisation d’un régistre.
Pré-requis
Pour cet exercice, le compte Docker Hub est facultatif mais utile si vous voulez tester vous même la publication d’une image.
Authentifier l’image que nous construisons
Lorsqu’on construit une image, Docker fourni un IMAGE ID qui peut sembler aléatoire. C’est en fait les 12 premiers caractères du hash sha-256 pour celle-ci. Créez un nouveau répertoire nommé “dockertest4”, rentrez-y, et puis téléchargez le fichier https://raw.githubusercontent.com/matbilodeau/labos-cloud/main/exemples/laboDocker/Dockerfile3, renommez ce fichier ‘Dockerfile’, et construisez l’image “utilisateurdockerhub/monhttpd:v4”. La commande sudo docker image inspect
permet d’obtenir les métadonnées détailées de l’image. Les sha-256 correspondent à ceux générés pour chaque image intermédiaire construite lors de votre build; des containers temporaires sont créés et vous pouvez aussi voir le Id du dernier container temporaire. Vous pouvez inspecter l’image de base utilisée par l’instruction FROM et comparer les hash et authentifier celle-ci. La valeur HTTPD_SHA256 n’est pas calculée, elle provient d’une variable d’environnement configurée dans le fichier Dockerfile de l’image de base. Une recherche internet permet de vérifier que cela correspond effectivement au fichier compressé “httpd-2.4.46.tar.bz2”. sudo docker history
indique l’historique de construction de l’image; chaque image correspond à une instruction du fichier Dockerfile. Les images manquantes correspondent aux couches inférieures de l’image de base, des images intermédiaires, qui ont été inclues dans un seul et unique bloc en lecture seule. En utilisant le même fichier Dockerfile à partir d’un système différent, les images intermédiaires auront des sha-256 différents et les couches construites aussi. Vous pouvez ainsi valider que l’image a bien été construite selon les instructions figurant au fichier Dockerfile lors de votre build. Le bloc de couches identiques correspond aux couches de l’image de base “httpd:2.4”. Image pleine grandeur
Authentifier l’image que nous téléchargeons d’un régistre
Un régistre est une application permettant de stocker et distribuer des images Docker qui peut s’exécuter localement. Docker Hub est le service officiel de Docker pour héberger des repositories contenant des images, publiques ou privées. Si vous avez un compte, vous pouvez utiliser la commande sudo docker login
puis sudo docker push
pour publier une image que vous avez construite; login permet aussi de télécharger les images privées auxquelles vous avez accès. L’image envoyée vers Docker Hub est celle que vous avez construite, elle n’est pas reconstruite sur un système distant, ce qui signifie que les sha-256 des images intermédiaires et des couches correspondront. Les couches sont publiées de la plus haute à la plus basse, et téléchargées de la plus basse à la plus haute. Vous remarquerez que l’image de base est est montée à partir de la librairie existante. Un sha-256 est ajouté par le régistre pour valider l’opération de stockage distant. Si vous téléchargez l’image à partir d’un autre système, vous pouvez comparer les valeurs et valider que l’image téléchargée correspond à celle publiée.