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