Statamic Peak

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 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.