Article
Publier une image Docker sur un Registry
Comment utiliser une image Docker qu'on a build en local ? À l'aide d'un registry ! Je vous explique ce que c'est et à quoi ça sert.
Un registry Docker (ou registre en français tout simplement) est un dépôt dans lequel on va pouvoir stocker des images Docker prête à l'emploi. Le plus connu est évidemment hub.docker.com mais il en existe d'autres comme Github Container Registry ou Scaleway Container Registry. Tous proposent la publication de conteneurs publics ou privés et facturent à l'usage.
Cet article fait parti d'une série sur la release et le déploiement d'une application Phoenix Framework. Si vous voulez accéder aux autres articles :
Comment pousser cette image sur un registry Docker ?
Comment utiliser Docker Compose pour notre application Phoenix Framework ?
Comment automatiser la release et la publication de l'image dans une pipeline de CI/CD ?
Comment publier une image Docker sur un registry ?
Avant de publier une image, il faut construire une image docker et la tagger avec le nom et la version qui nous convient. Il est possible de le faire avec une seule commande.
docker build . -t MON_REGISTRY/MON_NAMESPACE/MON_PROJET:latest
Vous pouvez remplacer latest
par la version de votre choix.
Si une image est à publier sur plusieurs versions, vous pouvez tagger une image existante avec un nouveau tag.
docker tag MON_REGISTRY/MON_NAMESPACE/MON_PROJET:latest MON_REGISTRY/MON_NAMESPACE/MON_PROJET:stable
Pour publier une image sur un registry, il est nécessaire de s'authentifier avec un nom d'utilisateur et un mot de passe fournis par Docker, Github, Scaleway, etc. La bonne pratique consiste à stocker votre token dans une variable d'environnement et à l'utiliser pour se connecter.
export CR_PAT=YOUR_TOKEN
echo $CR_PAT | docker login MON_REGISTRY -u USERNAME --password-stdin
Une fois connecté, avec une image en local, il nous suffit de publier la version que l'on souhaite.
docker push MON_REGISTRY/MON_NAMESPACE/MON_PROJET:latest
Comment utiliser une image présente sur un registry ?
Une image Docker d'un registry privé ou public s'utilise de la même façon qu'une image officielle publiée sur hub.docker.com.
Vous pouvez pull une image en ligne de commande :
docker pull MON_REGISTRY/MON_NAMESPACE/MON_PROJET
Vous pouvez l'utiliser dans un compose.yml :
# Containers we're going to run.
services:
# Our container.
app:
image: MON_REGISTRY/MON_NAMESPACE/MON_PROJET
Si vous utilisez une image qui n'est pas publique, vous devrez vous connectez à votre registry, comme on l'a vu plus haut.