Ceci est une ancienne révision du document !


Version : 2020.01

Dernière mise-à-jour : 2021/03/22 09:43

DOF201 - Stocker les Images Docker

Contenu du Module

  • DOF201 - Stocker les Images Docker
    • Contenu du Module
    • LAB #1 - Installer un Registre Privé
      • 1.1 - Installer docker
      • 1.2 - Préparation
      • 1.3 - Créer un Registre local,
      • 1.4 - Créer un Serveur de Registre Dédié
        • Configurer le clone comme Registre Dédié
        • Configurer le Client

LAB #1 - Installer un Registre Privé

Connectez-vous à la VM Debian_9 :

trainee@traineeXX:~$ ssh -l trainee debian9

1.1 - Installer docker

Docker n'est pas dans le dépôts de Debian. Afin de l'installer il convient d'ajouter le dépôt de docker. Premièrement, il est nécessaire d'installer les paquets permettant à Debian d'utiliser un dépôt en https :

root@debian9:~# apt-get update
...
root@debian9:~# apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
Reading package lists... Done
Building dependency tree       
Reading state information... Done
ca-certificates is already the newest version.
ca-certificates set to manually installed.
gnupg2 is already the newest version.
gnupg2 set to manually installed.
The following extra packages will be installed:
  libcurl3 python3-dbus python3-software-properties unattended-upgrades
Suggested packages:
  python-dbus-doc python3-dbus-dbg
The following NEW packages will be installed:
  apt-transport-https curl libcurl3 python3-dbus python3-software-properties
  software-properties-common unattended-upgrades
0 upgraded, 7 newly installed, 0 to remove and 1 not upgraded.
Need to get 960 kB of archives.
After this operation, 2,344 kB of additional disk space will be used.
Do you want to continue? [Y/n] 

Téléchargez la clef GPG officielle de docker :

root@debian9:~# curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
OK

Vérifiez que l'ID de la clef est 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 :

root@debian9:~# apt-key fingerprint 0EBFCD88
/etc/apt/trusted.gpg
--------------------
pub   4096R/0EBFCD88 2017-02-22
      Key fingerprint = 9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid                  Docker Release (CE deb) <docker@docker.com>
sub   4096R/F273FCD8 2017-02-22
...

Ajoutez le dépôt stable de docker :

root@debian9:~# add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

Important - Notez que la commande lsb_release -cs retourne le nom de la distribution Debian, à savoir dans ce cas stretch.

Installez maintenant le paquet docker-ce :

root@debian9:~# apt-get update
...
root@debian9:~# apt-get install docker-ce
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  aufs-tools cgroupfs-mount git git-man libapparmor1 liberror-perl
  libnih-dbus1 libnih1 makedev mountall plymouth rsync
Suggested packages:
  git-daemon-run git-daemon-sysvinit git-doc git-el git-email git-gui gitk
  gitweb git-arch git-cvs git-mediawiki git-svn plymouth-themes
The following NEW packages will be installed:
  aufs-tools cgroupfs-mount docker-ce git git-man libapparmor1 liberror-perl
  libnih-dbus1 libnih1 makedev mountall plymouth rsync
0 upgraded, 13 newly installed, 0 to remove and 99 not upgraded.
Need to get 26.5 MB of archives.
After this operation, 123 MB of additional disk space will be used.
Do you want to continue? [Y/n] 

Dernièrement, vérifiez la version de Docker client et serveur :

root@debian9:~# docker version
Client: Docker Engine - Community
 Version:           19.03.4
 API version:       1.40
 Go version:        go1.12.10
 Git commit:        9013bf583a
 Built:             Fri Oct 18 15:52:34 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.4
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.10
  Git commit:       9013bf583a
  Built:            Fri Oct 18 15:51:05 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.10
  GitCommit:        b34a5c8af56e510852c35414db4c1f4fa6172339
 runc:
  Version:          1.0.0-rc8+dev
  GitCommit:        3e425f80a8c931f88e6d94a8c831b9d5aa481657
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

Important - Docker est composé de trois éléments : un serveur, un client et un ou plusieurs Repositories ou Dépôts. Nous reviendrons sur les dépôts dans le détail plus tard dans ce cours.

Re-démarrez la machine virtuelle avant de poursuivre :

root@debian9:~# shutdown -r now

1.2 - Préparation

Connectez-vous à la VM Debian_9 :

trainee@traineeXX:~$ ssh -l trainee debian9

Passez en tant que root :

trainee@debian9:~$ su -
Mot de passe : fenestros
root@debian9:~#

Créez un répertoire nommé myDocker :

root@debian9:~# mkdir ~/myDocker
root@debian9:~# cd ~/myDocker
root@debian9:~/myDocker# 

Créez le fichier myEntrypoint.sh :

root@debian9:~/myDocker# vi myEntrypoint.sh
root@debian9:~/myDocker# cat myEntrypoint.sh 
#!/bin/bash
if [ -z "$myVariable" ]; then
	echo "La variable myVariable doit être renseignée"
	return 1
fi

while true;
do
	echo $1 \($(date +%H:%M:%S)\);
	sleep "$myVariable";
done

Testez ce script :

root@debian9:~/myDocker# myVariable=3 . ./myEntrypoint.sh salut
salut (20:04:39)
salut (20:04:42)
salut (20:04:45)
salut (20:04:48)
salut (20:04:51)
^C
root@debian9:~/myDocker# 

Rendez ce script exécutable :

root@debian9:~/myDocker# chmod u+x myEntrypoint.sh 

Créez maintenant le fichier Dockerfile dans le répertoire ~/myDocker :

root@debian9:~/myDocker# vi Dockerfile
root@debian9:~/myDocker# cat Dockerfile
FROM centos:latest
MAINTAINER i2tch "infos@i2tch.eu"
COPY myEntrypoint.sh /entrypoint.sh
ENV myVariable 3
ENTRYPOINT ["/entrypoint.sh"]
CMD ["mycommand"]

Générez maintenant l'image :

root@debian9:~/myDocker# docker build -t i2tch/mydocker .
Sending build context to Docker daemon  3.072kB
Step 1/6 : FROM centos:latest
 ---> 9f38484d220f
Step 2/6 : MAINTAINER i2tch "infos@i2tch.eu"
 ---> Running in 02c700ed04da
Removing intermediate container 02c700ed04da
 ---> 4274107d52e2
Step 3/6 : COPY myEntrypoint.sh /entrypoint.sh
 ---> 7a3923372768
Step 4/6 : ENV myVariable 3
 ---> Running in 3288bf6291ad
Removing intermediate container 3288bf6291ad
 ---> 3edb630c1511
Step 5/6 : ENTRYPOINT ["/entrypoint.sh"]
 ---> Running in 8dcba2c41520
Removing intermediate container 8dcba2c41520
 ---> 11962052539c
Step 6/6 : CMD ["mycommand"]
 ---> Running in f891fbcfaad0
Removing intermediate container f891fbcfaad0
 ---> 7925ba23abb2
Successfully built 7925ba23abb2
Successfully tagged i2tch/mydocker:latest

1.3 - Installer un Registre Local

Pour installer un registre privé, il convient d'utiliser une image publique de docker :

root@debian9:~/bestp# cd ..
root@debian9:~# docker run -d --name registry -p 88:5000 registry:2.0
Unable to find image 'registry:2.0' locally
2.0: Pulling from library/registry
4d2e9ae40c41: Pull complete 
a3ed95caeb02: Pull complete 
7c8152785df5: Pull complete 
8b04aafd7cd8: Pull complete 
c97c75d2d42e: Pull complete 
4b3ef98bba76: Pull complete 
edee0288d356: Pull complete 
ea2a9399d365: Pull complete 
ddf532273b60: Pull complete 
e9e91aa1843e: Pull complete 
6144b0ffbb4c: Pull complete 
Digest: sha256:3cac1869696e4ff3435bbc30391749ac373f7471736dbb48dfa9bfde08c4efd2
Status: Downloaded newer image for registry:2.0
c4c7cad999cdd77df78a21897bd11c4742a094c1c76a2134fbe4a4d2d92bff0e

Utilisez maintenant lynx à partir d'un terminal de votre machine hôte Docker pour vérifier que le registre est actif :

root@debian9:~# lynx --dump http://localhost:88/v2
{}root@debian9:~# 

Important - Notez la réponse du serveur est {} soit une liste JSON vide.

Renommez l'image i2tch/mydocker afin de pointer vers le nouveau registre :

root@debian9:~# docker tag i2tch/mydocker localhost:88/mydocker

Important - Notez que le tag i2tch/mydocker cache le nom du registre par défaut qui est le registre public de Docker Hub.

Envoyez votre image localhost:88/mydocker sur ce nouveau registre :

root@debian9:~# docker push localhost:88/mydocker
The push refers to a repository [localhost:88/mydocker]
873a8ac77d4d: Pushed 
b362758f4793: Pushed 
latest: digest: sha256:30866da81d92d2a1015b869c596ddd6e188f33894c41d8effa2161e5c2862b1f size: 5531

Constatez maintenant la présence de l'image dans le registre :

root@debian9:~# lynx --dump http://localhost:88/v2/mydocker/tags/list
{"name":"mydocker","tags":["latest"]}
root@debian9:~# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
testcache               latest              c3b03bddaaad        18 minutes ago      120MB
<none>                  <none>              1df8c3603628        23 minutes ago      120MB
i2tch/mydocker          latest              c37edbd43993        45 minutes ago      193MB
localhost:88/mydocker   latest              c37edbd43993        45 minutes ago      193MB
i2tch/mongodb2          latest              65e81f78c0f5        12 hours ago        240MB
i2tch/mongodb1          latest              2de862819e94        12 hours ago        240MB
i2tch/mongodb           latest              01c4aa152be2        12 hours ago        1.04GB
ubuntu                  latest              ccc7a11d65b1        3 weeks ago         120MB
centos                  latest              328edcd84f1b        4 weeks ago         193MB
nginx                   latest              b8efb18f159b        6 weeks ago         107MB
debian                  wheezy-slim         884ca0b949e5        6 weeks ago         46.9MB
hello-world             latest              1815c82652c0        2 months ago        1.84kB
registry                2.0                 3bccd459597f        2 years ago         549MB

1.4 - Créer un Serveur de Registre Dédié

Actuellement, le registre privé créé ci-dessus n'est pas accessible à partir du réseau local car il est référencé par localhost. Il convient donc maintenant de mettre en place un serveur dédié.

Créez le réseau Nat NatNetwork :

desktop@serverXX:~$ VBoxManage natnetwork add --netname NatNetwork --network "10.0.2.0/24" --enable
desktop@serverXX:~$ VBoxManage natnetwork modify --netname NatNetwork --dhcp on
desktop@serverXX:~$ VBoxManage natnetwork start --netname NatNetwork

Vérifiez que votre machine virtuelle Debian_9 est allumée :

desktop@serverXX:~$ VBoxManage list runningvms
"Debian_9" {0ab64831-56fb-4f1b-95cc-d6e107451742}

Placez Debian_9 dans le réseau NAT NatNetwork :

desktop@serverXX:~$ VBoxManage controlvm Debian_9 nic1 natnetwork NatNetwork

Arrêtez la VM Debian_9 :

desktop@serverXX:~$ VBoxManage controlvm Debian_9 poweroff
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

Créez un clone de la VM Debian_9 appelé Registry :

desktop@serverXX:~$ VBoxManage clonevm Debian_9 --name="Registry" --register --mode=all
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Machine has been successfully cloned as "Registry"

Vérifiez la présence de votre clône :

desktop@serverXX:~$ VBoxManage list vms
"Ansible" {73241c69-0827-431c-a25b-756ac6ac722c}
"CentOS_7" {2a6e6280-9c56-40eb-b04a-a96f397c82de}
"Debian_9" {0ab64831-56fb-4f1b-95cc-d6e107451742}
"Manager" {f1b9be7c-5cdf-459a-a47a-21cfac927966}
"TargetA" {66583f4a-fa27-4db5-b12f-05f36902b1ab}
"TargetB" {4819e950-8477-42b5-912d-6fe67cb88b9c}
"Web01" {f14ef311-8b34-4850-99a4-12d3ef24e63b}
"Web02" {62522626-8415-4810-a7c6-6c8fdb5dfef8}
"Web03" {16d9bf94-bfa0-46ea-9c5b-5dece023b073}
"Web04" {986e91a0-50e8-4170-8055-ba8ca5f0dcb3}
"Windows10" {c3c63823-af86-4cf3-9fb7-1e215e7b662a}
"Worker1" {a924df56-20d4-4638-a4d9-67a1a019591c}
"Worker2" {25fae873-dbba-4332-961f-24077cee5310}
"Debian_9_1" {38603f72-6cae-4186-a5ed-648e900cf398}
"Registry" {aac92847-6833-494a-8ca6-0c403a7a249a}

Démarrez la machine virtuelle Registry :

desktop@serverXX:~$ VBoxManage startvm Registry --type headless

Configurez votre clone en réseau NAT :

desktop@serverXX:~$ VBoxManage controlvm Registry nic1 nat

Connectez-vous à votre clone :

desktop@serverXX:~$ ssh -l trainee localhost -p 2022
trainee@localhost's password: trainee

En tant que root, modifiez le nom d'hôte de la machine !

trainee@debian9:~$ su -
Mot de passe : fenestros
root@debian9:~# nmcli general hostname registry
root@debian9:~# hostname
registry

Configurez une adresse IP fixe pour la VM Registry :

root@debian9:~# nmcli connection add con-name ip_fixe ifname enp0s3 type ethernet ip4 10.0.2.4/24 gw4 10.0.2.2
Connexion « ip_fixe » (a84f9227-dd89-4e06-957f-cb707e83fd47) ajoutée avec succès.
root@debian9:~# nmcli connection mod ip_fixe ipv4.dns 8.8.8.8
root@debian9:~# nmcli connection up ip_fixe

Fermez le terminal et reconnectez-vous à votre serveur. Vérifiez que seule la VM Registry soit allumée :

desktop@serverXX:~$ VBoxManage list runningvms
"Registry" {aac92847-6833-494a-8ca6-0c403a7a249a}

Connectez-vous à la VM Registry :

desktop@serverXX:~$ ssh -l trainee localhost -p 2022
trainee@localhost's password: trainee

Vérifiez la prise en compte de la modification de l'adresse IP :

trainee@registry:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:3b:0a:87 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.4/24 brd 10.0.2.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::eaaa:3c18:9e20:768b/64 scope link 
       valid_lft forever preferred_lft forever

Sortez de la VM Registry :

trainee@registry:~$ exit
déconnexion
Connection to localhost closed.

Remettez la VM Registry dans le réseau NAT NatNetwork :

desktop@serverXX:~$ VBoxManage controlvm Registry nic1 natnetwork NatNetwork

Configurez la redirection des ports dans le réseau NAT NatNetwork :

desktop@serverXX:~$ VBoxManage natnetwork modify --netname NatNetwork --port-forward-4 "Docker_Debian_9:tcp:[]:2022:[10.0.2.15]:22"
desktop@serverXX:~$ VBoxManage natnetwork modify --netname NatNetwork --port-forward-4 "Docker_Registry:tcp:[]:4022:[10.0.2.4]:22"

Connectez-vous à la VM Registry :

desktop@serverXX:~$ ssh -l trainee localhost -p 4022
trainee@localhost's password: trainee
Linux registry 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Apr 17 15:36:25 2020 from 10.0.2.2
trainee@registry:~$ su -
Mot de passe : fenestros
root@registry:~#

Editez le fichier /etc/hosts :

root@registry:~# vi /etc/hosts
root@registry:~# cat /etc/hosts
127.0.0.1	localhost
127.0.1.1	debian9.i2tch.loc   	debian9
10.0.2.4	myregistry.i2tch.loc    myregistry
10.0.2.15   debian9.i2tch.loc       debian9

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Créez maintenant un certificat auto-signé avec openssl :

root@registry:~# cd / && mkdir certs && openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key -x509 -days 365 -out certs/domain.crt
Generating a 4096 bit RSA private key
............................................................++
.......................................................................................................................................++
writing new private key to 'certs/domain.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:VAR
Locality Name (eg, city) []:Toulon
Organization Name (eg, company) [Internet Widgits Pty Ltd]:I2TCH LTD
Organizational Unit Name (eg, section) []:TRAINING
Common Name (e.g. server FQDN or YOUR name) []:myregistry
Email Address []:
root@registry:/# ls certs/
domain.crt  domain.key

Supprimez le conteneur registry :

root@registry:/# docker rm registry
registry

Créez un conteneur en mode sécurisé avec TLS à partir de l'image registry :

root@registry:/# docker run -d -p 5000:5000 --name registry -v `pwd`/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key registry:2.0
943c01b67cf3f461270a55ac3d9df6622cc9d74e5f272e17153183ff29ee5932
root@debian9:/# 

root@registry:/# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS                    NAMES
943c01b67cf3        registry:2.0        "registry cmd/regi..."   31 seconds ago      Up 24 seconds                 0.0.0.0:5000->5000/tcp   registry
ea239635e141        testcache           "more /tmp/moment"       40 minutes ago      Exited (0) 40 minutes ago                              test1
21b0490a93dd        i2tch/mydocker      "/entrypoint.sh my..."   About an hour ago   Exited (137) 18 minutes ago                            myDocker
b9773e4aa06d        i2tch/mongodb2      "docker-entrypoint..."   2 hours ago         Exited (0) 18 minutes ago                              mongo2
bdb4bc0f81de        i2tch/mongodb1      "docker-entrypoint..."   12 hours ago        Created                       27017/tcp                mongo1
f5b45072b831        i2tch/mongodb       "bash"                   13 hours ago        Exited (137) 18 minutes ago                            mongo
9731a48f126a        nginx               "nginx -g 'daemon ..."   13 hours ago        Exited (0) 18 minutes ago                              cocky_gates
eacd70596e23        nginx               "nginx -g 'daemon ..."   13 hours ago        Exited (0) 13 hours ago                                adoring_yonath
cffb4456e9c4        ubuntu              "/bin/bash"              14 hours ago        Exited (0) 14 hours ago                                i2tch

Configurer le Client

Sortez de la VM Registry et démarrez la VM Debian_9 :

desktop@serverXX:~$ VBoxManage startvm Debian_9 --type headless
Waiting for VM "Debian_9" to power on...
VM "Debian_9" has been successfully started.

Connectez-vous à la VM Debian_9 :

desktop@serverXX:~$ ssh -l trainee localhost -p 2022

Passez en tant que root :

trainee@debian9:~$ su -
Mot de passe : fenestros
root@debian9:~#

Supprimez le conteneur registry :

root@debian9:~# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
c4c7cad999cd        registry:2.0        "registry cmd/regi..."   4 hours ago         Exited (2) 4 hours ago                         registry
ea239635e141        testcache           "more /tmp/moment"       4 hours ago         Exited (0) 4 hours ago                         test1
21b0490a93dd        i2tch/mydocker      "/entrypoint.sh my..."   4 hours ago         Exited (137) 4 hours ago                       myDocker
b9773e4aa06d        i2tch/mongodb2      "docker-entrypoint..."   5 hours ago         Exited (0) 4 hours ago                         mongo2
bdb4bc0f81de        i2tch/mongodb1      "docker-entrypoint..."   16 hours ago        Created                    27017/tcp           mongo1
f5b45072b831        i2tch/mongodb       "bash"                   16 hours ago        Exited (137) 4 hours ago                       mongo
9731a48f126a        nginx               "nginx -g 'daemon ..."   16 hours ago        Exited (0) 4 hours ago                         cocky_gates
eacd70596e23        nginx               "nginx -g 'daemon ..."   17 hours ago        Exited (0) 17 hours ago                        adoring_yonath
cffb4456e9c4        ubuntu              "/bin/bash"              17 hours ago        Exited (0) 17 hours ago                        i2tch
root@debian9:~# docker rm registry
registry
root@debian9:~# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
ea239635e141        testcache           "more /tmp/moment"       4 hours ago         Exited (0) 4 hours ago                         test1
21b0490a93dd        i2tch/mydocker      "/entrypoint.sh my..."   4 hours ago         Exited (137) 4 hours ago                       myDocker
b9773e4aa06d        i2tch/mongodb2      "docker-entrypoint..."   5 hours ago         Exited (0) 4 hours ago                         mongo2
bdb4bc0f81de        i2tch/mongodb1      "docker-entrypoint..."   16 hours ago        Created                    27017/tcp           mongo1
f5b45072b831        i2tch/mongodb       "bash"                   16 hours ago        Exited (137) 4 hours ago                       mongo
9731a48f126a        nginx               "nginx -g 'daemon ..."   16 hours ago        Exited (0) 4 hours ago                         cocky_gates
eacd70596e23        nginx               "nginx -g 'daemon ..."   17 hours ago        Exited (0) 17 hours ago                        adoring_yonath
cffb4456e9c4        ubuntu              "/bin/bash"              17 hours ago        Exited (0) 17 hours ago                        i2tch

ainsi que l'image du registry :

root@debian9:~# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
testcache               latest              c3b03bddaaad        4 hours ago         120MB
<none>                  <none>              1df8c3603628        4 hours ago         120MB
i2tch/mydocker          latest              c37edbd43993        5 hours ago         193MB
localhost:88/mydocker   latest              c37edbd43993        5 hours ago         193MB
<none>                  <none>              d6b51963df8d        5 hours ago         193MB
i2tch/mongodb2          latest              65e81f78c0f5        16 hours ago        240MB
i2tch/mongodb1          latest              2de862819e94        16 hours ago        240MB
i2tch/mongodb           latest              01c4aa152be2        16 hours ago        1.04GB
ubuntu                  latest              ccc7a11d65b1        3 weeks ago         120MB
centos                  latest              328edcd84f1b        4 weeks ago         193MB
nginx                   latest              b8efb18f159b        6 weeks ago         107MB
debian                  wheezy-slim         884ca0b949e5        6 weeks ago         46.9MB
hello-world             latest              1815c82652c0        2 months ago        1.84kB
registry                2.0                 3bccd459597f        2 years ago         549MB

root@debian9:~# docker rmi registry:2.0
Untagged: registry:2.0
Untagged: registry@sha256:3cac1869696e4ff3435bbc30391749ac373f7471736dbb48dfa9bfde08c4efd2
Deleted: sha256:3bccd459597f38e78ce95a408e506099644ca713d79157d2f3e3a7975f1c9146
Deleted: sha256:e486d081a2821af119adbc458214cacf510ebb519cdf31e04ac3d4c6ac521c31
Deleted: sha256:d206757aba612d90965729f186dfb70aa5e63b53dafd7e7b20a76005acddfe24
Deleted: sha256:1b953394add763fbaa50446b03d636f453fa75b2d12676ceb4b71681b4da6e7d
Deleted: sha256:e8a2cacb793cb843e35bbf64e9c73d685d83ecc8192fbdbc098b0e5fbcced848
Deleted: sha256:19eec9bf8dcc3cb15b93cdcff717057444c540ee641cf20b7ef647d19b9d1df4
Deleted: sha256:2fb6f2d834e4dd55a7a6bb1472f5c293242e6439982332143d7332642a238d40
Deleted: sha256:e08b039d73e73f17b3fa02ebf9a28ef156a7b43b828cd67ed422b9d7a01e5482
Deleted: sha256:bd85e070a996530cc5f576bc5f56a0e3a159e00091410987416844de6e018415
Deleted: sha256:6269effe5aa88dfc0071a2841605d95c0d809111333b5044b2459b43e5879f44
Deleted: sha256:784ff50f126370cb3be928cd14a078605990efda458e73ad43f2a2e40e1efda2
Deleted: sha256:29efd197b6056e252ebb46fe1b315489c2f8e032eb32d1f6fcd0119ee9536df7
Deleted: sha256:3d42e373d713bfab9403159f282ba4cfaa7b4f33e57d5e36d4d2ca0ca1a2f4e7
Deleted: sha256:518c6772b2fc316c63e9f4f9745e3587f169ec916fd26749b0ce7bf1f36bb93b
Deleted: sha256:e74bff63859c2597691fffd6fe95b35b0803f6791bc6565072bf07067574dba3
Deleted: sha256:f76baad394e6d835fa0e166254e9f70af873fe43232c67ac198a67865084ccee
Deleted: sha256:b0eba742532f664bab6fc6d5bd00c60141397ba299f6743457f7ead64d7c714d
Deleted: sha256:c10c49233bc62ce69aafa1a44a62d8639a7be08d68b1c23d6b25ebb13e5324b0
Deleted: sha256:1c8e9ba14469736fa03ede127e47f5821ca97b3029385ec1348e87932c875ff8
Deleted: sha256:611f5c9e21fce8d870f9ba82248980ca3baaaf95afef2b17504372d1ca03cb5a
Deleted: sha256:4cb1abe123254326dba72305ef897fdf5364ebb1823413e13dbced41990f951e
Deleted: sha256:e10e5ea91f007db418b284f4adc5f0b98f374d79ae52b9687b0d6d33865ffbcf
Deleted: sha256:c69ae1aa46985cbaf186b6354c61a1d2e0d6af47133db47bf04f0c6eb9c858e9

root@debian9:~# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
testcache               latest              c3b03bddaaad        4 hours ago         120MB
<none>                  <none>              1df8c3603628        4 hours ago         120MB
i2tch/mydocker          latest              c37edbd43993        5 hours ago         193MB
localhost:88/mydocker   latest              c37edbd43993        5 hours ago         193MB
<none>                  <none>              d6b51963df8d        5 hours ago         193MB
i2tch/mongodb2          latest              65e81f78c0f5        16 hours ago        240MB
i2tch/mongodb1          latest              2de862819e94        16 hours ago        240MB
i2tch/mongodb           latest              01c4aa152be2        16 hours ago        1.04GB
ubuntu                  latest              ccc7a11d65b1        3 weeks ago         120MB
centos                  latest              328edcd84f1b        4 weeks ago         193MB
nginx                   latest              b8efb18f159b        6 weeks ago         107MB
debian                  wheezy-slim         884ca0b949e5        6 weeks ago         46.9MB
hello-world             latest              1815c82652c0        2 months ago        1.84kB

Renommez l'image i2tch/mydocker afin de pointer vers le serveur de registre :

root@debian9:~# docker tag i2tch/mydocker myregistry:5000/mydocker
root@debian9:~# docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
testcache                  latest              c3b03bddaaad        4 hours ago         120MB
<none>                     <none>              1df8c3603628        4 hours ago         120MB
i2tch/mydocker             latest              c37edbd43993        5 hours ago         193MB
localhost:88/mydocker      latest              c37edbd43993        5 hours ago         193MB
myregistry:5000/mydocker   latest              c37edbd43993        5 hours ago         193MB
<none>                     <none>              d6b51963df8d        5 hours ago         193MB
i2tch/mongodb2             latest              65e81f78c0f5        16 hours ago        240MB
i2tch/mongodb1             latest              2de862819e94        16 hours ago        240MB
i2tch/mongodb              latest              01c4aa152be2        16 hours ago        1.04GB
ubuntu                     latest              ccc7a11d65b1        3 weeks ago         120MB
centos                     latest              328edcd84f1b        4 weeks ago         193MB
nginx                      latest              b8efb18f159b        6 weeks ago         107MB
debian                     wheezy-slim         884ca0b949e5        6 weeks ago         46.9MB
hello-world                latest              1815c82652c0        2 months ago        1.84kB

Éditez le fichier /etc/hosts afin de pointer le 10.0.2.4 vers le nom myregistry :

root@debian9:~# vi /etc/hosts
root@debian9:~# cat /etc/hosts
127.0.0.1	localhost
127.0.1.1	debian9.i2tch.loc   	debian9
10.0.2.4	myregistry.i2tch.loc    myregistry
10.0.2.15   debian9.i2tch.loc       debian9

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

De la machine virtuelle registry envoyez une copie du fichier /certs/domain.crt vers le répertoire /tmp de la machine virtuelle Debian_9 en le renommant ca.crt :

root@registry:~# scp /certs/domain.crt trainee@10.0.2.15:/tmp/ca.crt
The authenticity of host '10.0.2.15 (10.0.2.15)' can't be established.
ECDSA key fingerprint is 79:00:60:0e:2b:71:5e:cb:1a:08:45:e8:ab:45:b8:dd.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.2.15' (ECDSA) to the list of known hosts.
trainee@10.0.2.15's password: 
domain.crt                                                                                                                            100% 2017     2.0KB/s   00:00  

Dans la machine virtuelle Debian_9, déplacez le fichier /tmp/ca.crt vers le répertoire /etc/docker/certs.d/myregistry:5000/ :

root@debian9:~# mkdir -p /etc/docker/certs.d/myregistry:5000
root@debian9:~# mv /tmp/ca.crt /etc/docker/certs.d/myregistry:5000/

Testez la réponse du registre :

root@debian9:~# curl http://myregistry:5000/v2/


Finalement, envoyez l'image au registre :

root@debian9:~# docker push myregistry:5000/mydocker
The push refers to a repository [myregistry:5000/mydocker]
873a8ac77d4d: Pushed 
b362758f4793: Pushed 
latest: digest: sha256:30866da81d92d2a1015b869c596ddd6e188f33894c41d8effa2161e5c2862b1f size: 5531

<html>

Copyright © 2020 Hugh NORRIS

</html>

Menu