Docker fourni une solution de registry privé sous la forme d’une image docker
appelée registry
. Nous allons configurer deux conteneurs à partir de cette
image :
-
un miroir local du Docker Hub,
-
un registry privé destiné à héberger les images créées en interne.
Un fichier docker-hub.yml
[1] est créé avec le contenu suivant :
version: 0.1
log:
fields:
service: registry
storage:
cache:
blobdescriptor: inmemory
delete:
enabled: true
filesystem:
rootdirectory: /var/lib/registry
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
proxy:
remoteurl: https://registry-1.docker.io
health:
storagedriver:
enabled: true
interval: 10s
threshold: 3
Ce fichier est déposé dans le répertoire /data/registry/
.
Exécuter la commande suivante pour finaliser la création du mirroir :
$ docker run -d -p 5000:5000 --restart=always --name docker-hub \
-v /data/registry/docker-hub:/var/lib/registry \
-v /data/registry/docker-hub.yml:/etc/docker/registry/config.yml \
registry:2.5.0
Note
|
|
Les collaborateurs souhaitant bénéficier du mirroir pour le hub Docker doivent configurer le service docker.
-
Éditer le fichier
/etc/default/docker
et ajouter ou modifier la variable d’environnementDOCKER_OPTS
:DOCKER_OPTS="--registry-mirror=http://<docker-host>:5000 …"
-
Sauvegarder les modification puis redémarrer le service docker :
$ sudo service docker restart
-
S’il n’existe pas, créer le fichier
/etc/systemd/system/docker.service.d/override.conf
avec le contenu suivant :[Service] ExecStart= ExecStart=/usr/bin/docker daemon --registry-mirror=http://<docker-host>:5000 -H fd://
-
Sinon, ajouter l’option
--registry-mirror=http://<docker-host>:5000
sur la seconde ligne débutant parExecStart
-
Sauvegarder les modification puis recharger la configuration de systemd :
$ sudo systemctl daemon-reload
-
Enfin redémarrer le service docker :
$ sudo systemctl restart docker
Un fichier my-registry.yml
[1] est créé avec le contenu suivant :
version: 0.1
log:
fields:
service: registry
storage:
cache:
blobdescriptor: inmemory
delete:
enabled: true
filesystem:
rootdirectory: /var/lib/registry
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
health:
storagedriver:
enabled: true
interval: 10s
threshold: 3
Ce fichier est déposé dans le répertoire /data/registry/
.
Exécuter la commande suivante pour finaliser la création du mirroir :
$ docker run -d -p 5001:5000 --restart=always --name my-registry \
-v /data/registry/my-registry:/var/lib/registry \
-v /data/registry/my-registry.yml:/etc/docker/registry/config.yml \
registry:2.5.0
Note
|
|
Le service docker doit être démarré avec une nouvelle option --insecure-registry
pour pouvoir interragir avec le
registry privé my-registry
.
-
Éditer le fichier
/etc/default/docker
et ajouter ou modifier la variable d’environnementDOCKER_OPTS
:DOCKER_OPTS="--insecure-registry <docker-host>:5001 …"
-
Sauvegarder les modification puis redémarrer le service docker :
$ sudo service docker restart
-
S’il n’existe pas, créer le fichier
/etc/systemd/system/docker.service.d/override.conf
avec le contenu suivant :[Service] ExecStart= ExecStart=/usr/bin/docker daemon --insecure-registry <docker-host>:5001 -H fd://
-
Sinon, ajouter l’option
--insecure-registry <docker-host>:5001
sur la seconde ligne débutant parExecStart
-
Sauvegarder les modification puis recharger la configuration de systemd :
$ sudo systemctl daemon-reload
-
Enfin redémarrer le service docker :
$ sudo systemctl restart docker
distribution
de Docker. Les explications des options de configuration sont disponibles à cette adresse : http://docs.docker.com/registry/configuration/