Créer une image Docker à partir d'un conteneur et la publier sur Alibaba Cloud

L'objectif est de créer une image Docker sur la base d'un conteneur existant sur votre machine locale, puis de la transférer vers un dépôt d'images Alibaba Cloud (Aliyun). Cette image pourra ensuite être téléchargée et utilisée sur d'autres hôtes Docker connectés au réseau.

Remarque importante : Si votre dépôt est de type privé, toute opération de docker push ou docker pull nécessitera une authentification préalable. Pour un dépôt public, les images peuvent être récupérées de manière anonyme (sans authentification).

Étape 1 : Générer une nouvellle image à partir d'un conteneur

Consultons d'abord les images disponibles :

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               7aa3602ab41e        5 weeks ago         115 MB

Lançons un conteneur interactif basé sur l'image Ubuntu :

$ docker run -it --name conteneur-test -d ubuntu:16.04
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
e8b1c4f5a7d2        ubuntu:16.04        "/bin/bash"         10 seconds ago      Up 9 seconds                            conteneur-test

Utilisons la commande docker commit pour figer l'état de ce conteneur dans une nouvelle image. Les options courantes sont :

  • -a : Auteur de l'image
  • -m : Message descriptif
  • -p : Mettre le conteneur en pauce pendant la capture
$ docker commit -a "utilisateur1" -m "Capture de l'état initial" e8b1c4f5a7d2 mon-image-ubuntu:v1

La nouvelle image mon-image-ubuntu:v1 est maintenant disponible localement.

Étape 2 : Préparer et transférer l'image vers un registre Alibaba Cloud

Vérifions la création de notre image :

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mon-image-ubuntu    v1                  9f3a2c1b8e4d        1 minute ago        84.1 MB
ubuntu              16.04               7aa3602ab41e        5 weeks ago         115 MB

La politique d'Alibaba Cloud exige que l'image soit préalablement taguée avec l'adresse complète du registre. Appliquons cette transformation :

$ docker tag 9f3a2c1b8e4d registry.cn-hangzhou.aliyuncs.com/mon-espace/mon-depot:ubuntu-personnalise
$ docker images
REPOSITORY                                           TAG                 IMAGE ID            CREATED             SIZE
mon-image-ubuntu                                     v1                  9f3a2c1b8e4d        2 minutes ago       84.1 MB
registry.cn-hangzhou.aliyuncs.com/mon-espace/mon-depot   ubuntu-personnalise 9f3a2c1b8e4d        2 minutes ago       84.1 MB
ubuntu                                               16.04               7aa3602ab41e        5 weeks ago         115 MB

Authentifions-nous auprès du registre Aliyun :

$ docker login --username=votre_nom_utilisateur registry.cn-hangzhou.aliyuncs.com
Password: 
WARNING! Your password will be stored unencrypted in /home/user/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

Téléchargeons (poussons) l'image taguée vers le registre distant :

$ docker push registry.cn-hangzhou.aliyuncs.com/mon-espace/mon-depot:ubuntu-personnalise
The push refers to repository [registry.cn-hangzhou.aliyuncs.com/mon-espace/mon-depot]
7f5a8b4c3d2e: Pushed 
ubuntu-personnalise: digest: sha256:4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4 size: 1234

L'image est maintenant stockée dans votre dépôt Alibaba Cloud.

Étape 3 : Récupérer l'image depuis un autre hôte

Sur une machine distante, connectez-vous au même registre :

$ docker login --username=votre_nom_utilisateur registry.cn-hangzhou.aliyuncs.com
Password: 
Login Succeeded

Téléchargez (tirez) l'image depuis le registre :

$ docker pull registry.cn-hangzhou.aliyuncs.com/mon-espace/mon-depot:ubuntu-personnalise
ubuntu-personnalise: Pulling from mon-espace/mon-depot
e96e057aae67: Pull complete
Digest: sha256:4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4
Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/mon-espace/mon-depot:ubuntu-personnalise
registry.cn-hangzhou.aliyuncs.com/mon-espace/mon-depot:ubuntu-personnalise

Vous pouvez maintenant vérifier sa présence dans la liste des images locales :

$ docker images
REPOSITORY                                           TAG                 IMAGE ID            CREATED             SIZE
registry.cn-hangzhou.aliyuncs.com/mon-espace/mon-depot   ubuntu-personnalise 9f3a2c1b8e4d        5 minutes ago       84.1 MB

Étiquettes: Docker Docker Commit Alibaba Cloud Registre d'images Docker Push

Publié le 22 juin à 05h13