Les conteneurs dans la chaîne
Exécuter un job dans une image, lui adjoindre des services, construire, étiqueter et pousser l'image, distinguer étiquette et empreinte, promouvoir la même image d'un environnement à l'autre et l'analyser.
- 25 cartes
- 4 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Mises en situation
Quelques cartes du deck
Image de conteneur : de quoi s'agit-il ?
Voir la réponse
Paquet figé et en lecture seule qui contient un programme et tout ce dont il a besoin pour tourner, et à partir duquel on crée des conteneurs.
Un job de pipeline s'exécute lui aussi dans une image : elle fixe les outils et leurs versions, donc l'environnement du job.
Dans cette séquence, quelle image
docker pull $IMG:latestrécupère-t-il à la fin ?
```bash
IMG=registry.example.com/equipe/app
docker build -t $IMG:1.2 .
docker push $IMG:1.2
docker tag $IMG:1.2 $IMG:latest
docker push $IMG:latest
# le code change, nouvelle construction
docker build -t $IMG:latest .
docker push $IMG:latest`- L'image de la seconde construction
- L'image de
1.2, la première à avoir portélatest - Aucune : le registre refuse de repousser une étiquette existante
- La plus ancienne, que le registre garde sous
latest
Voir la réponse
L'image de la seconde construction
Une étiquette se déplace : le second
docker push $IMG:latestla fait pointer vers la nouvelle image.$IMG:1.2désigne toujours l'ancienne, qui n'est plus celle delatest.Pour déployer une version précise, on étiquette l'image avec le … ou le numéro de version, et non avec ….
Voir la réponse
Pour déployer une version précise, on étiquette l'image avec le hash du commit ou le numéro de version, et non avec latest.
latestchange de contenu à chaque poussée : on ne sait plus quelle version tourne, ni vers laquelle revenir.Registre d'images : de quoi s'agit-il ?
Voir la réponse
Serveur qui stocke les images de conteneurs, nommées et versionnées, où le pipeline les envoie et d'où les machines les tirent.
Il sert de point de passage entre la construction et le déploiement : on y pousse une fois, on y tire autant de fois qu'il faut.
Le job
docker builds'arrête sur « Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? ». Quelle est la cause probable, et la solution ?- Aucun démon Docker dans le job : ajouter le service
docker:dind - Le registre est hors service : relancer le job un peu plus tard
- Le Dockerfile est invalide : corriger sa première instruction
- Le job n'est pas connecté au registre : ajouter
docker login
Voir la réponse
Aucun démon Docker dans le job : ajouter le service
docker:dindLe client
dockerdu job cherche un démon sur sa socket locale et n'en trouve pas. Un servicedocker:dind(ou un constructeur sans démon) en fournit un. Un Dockerfile invalide produirait une erreur de construction, pas de connexion.- Aucun démon Docker dans le job : ajouter le service