Publier une image¶
Une fois qu'une image est construite, il est possible de la pousser vers un registry comme par exemple dockerhub pour la partager.
Avant de pousser, une image sur Dockerhub, il faut l'avoir construite en précisant l'adresse de la registry suivi du nom du projet:
Il faut ensuite se connecter à la registry:
Puis pousser l'image:
Registry Dockerhub¶
Pour publier sur la registry Dockerhub (registry par défaut), vous devez au préalable vous créer un compte puis un projet que l'on appellera ici myproject
.
Il faut ensuite construire l'image en précisant l'adresse de la registry puis le nom du projet. Par exemple, en reprenant un des cas d'application précédent:
docker build -f Dockerfile -t myproject/exemple . &&\
docker build -f Doockerfile.cmd -t myproject/exemple:cmd
Note
Dockerhub étant la registry par défaut de l'ecosytème Docker pour télécharger ou pousser une image, il n'est pas nécessaire de préciser l'adresse de la registry. La syntaxe complète est la suivante:
Et pour une image officielle :Il faut ensuite se connecter à la registry avec:
Note
Même remarque, Dockerhub étant la registry par défaut de l'ecosytème Docker il n'est pas nécessaire de préciser l'adresse de la registry. La syntaxe complète est la suivante:
Vous devriez obtenir:
user@host $ docker login
Connectez-vous avec votre identifiant Docker pour pousser et tirer des images de Docker Hub. Si vous n'avez pas d'ID Docker, rendez-vous sur https://hub.docker.com pour en créer un.
Nom d'utilisateur : your_login
Mot de passe :
ATTENTION ! Votre mot de passe sera stocké en clair dans /home/user/.docker/config.json.
Configurez un credential helper pour supprimer cet avertissement. Voir
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
user@host $ docker image push myproject/exemple:cmd
user@host $ docker image push myproject/exemple
Vérifiez ensuite sur le site de Dockerhub si les images ont été publiées.
Registry Gitlab¶
Chaque projet sur le serveur Gitlab de l'IN2P3 peut stocker des images Docker. Sur le site web du serveur, l'onglet Registry de chaque projet liste les images stockées, ainsi que les instructions pour les télécharger ou les envoyer.
Par exemple, pour se connecter à la registry, recréer l'image et la pousser, voici les instructions:
user@host $ docker login gitlab-registry.in2p3.fr
Nom d'utilisateur : your_login
Mot de passe :
WARNING ! Votre mot de passe sera stocké en clair dans /home/user/.docker/config.json.
Configurez un outil d'aide à l'authentification pour supprimer cet avertissement. Voir
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Connexion réussie
user@host $ docker build -f Dockerfile.cmd -t gitlab-registry.in2p3.fr/user/myproject/exemple:cmd .
user@host $ docker push gitlab-registry.in2p3.fr/user/myproject/exemple:cmd
Astuce
Vous pouvez également utiliser l'intégration continue pour permettre la construction automatique d'une image Docker accessible via le GitLab registry.
Avec Kaniko :
stages:
- build
build:
stage: build
only:
- main
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
script:
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"${CI_REGISTRY}\":{\"auth\":\"$(printf "%s:%s" "${CI_REGISTRY_USER}" "${CI_REGISTRY_PASSWORD}" | base64 | tr -d '\n')\"}}}" > /kaniko/.docker/config.json
- >-
/kaniko/executor
--context "${CI_PROJECT_DIR}"
--dockerfile "${CI_PROJECT_DIR}/Dockerfile"
--destination "${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_SLUG}"
- echo 'pushed on registry'