Docker Registry privé

Docker RegistryDocker est une plateforme open-source qui permet de packager des applications sous forme de container en embarquant leurs dépendances, ce qui lui permet d’être facilement portable et déployable.

Un container est fabriqué à partir d’une “image”, nous allons voir comment gérer un registre privé d’images Docker avec Portus.

Installer Docker et Docker Compose sur le serveur qui fera office de registre.

Suivre la documentation officielle :

Générer un certificat :

openssl req -newkey rsa:2048 -nodes -sha256 -keyout portus.key -x509 -days 365 -out portus.crt

Docker Compose

La partie la plus complexe est de bien paramétrer le fichier docker-compose.yml
Il faut s’inspirer des exemples sur leur Github.
Prendre l’exemple avec Clair secure qui est un scan de vulnérabilité d’image.
Renseigner les mots de passe dans le fichier .env
Une fois le fichier docker-compose.yml complet et les différents dossiers créés (nginx, registry, clair, secrets, certificates), copier les fichier portus.key et portus.crt dans secrets et certificates.

Lancer Docker Compose :

docker-compose up # permet de voir la sortie console
docker-compose up -d # en mode détaché

Paramétrer les clients Docker

Le client Docker, c’est le développeur qui a son docker d’installé sur sa machine et qui souhaite utiliser les images du registre privé.
Premièrement, il faut se connecter à l’interface de Portus (connexion LDAP ou custom), puis se créer un token dans la page profil.
Ensuite il faut préciser à Docker de “truster” notre registry, qui a un certificat inconnu dans notre cas :

sudo nano /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry my-custom-host.domain.local:5000 --
registry-mirror=https://my-custom-host.domain.local:5000
sudo service docker restart
sudo systemctl daemon-reload

On récupère le fichier portus.crt et on le copie en local :

sudo cp portus.crt /etc/docker/certs.d/my-custom-host.domain.local:5000/ca.crt

On peut maintenant tenter de se connecter au registry privé :

docker login -u mylogin -p MoNSeCreTTokeN my-custom-host.domain.local:5000

Tag et Push d’image

Pour tagger une image et la pusher sur le registry :

docker image tag foo-bar:latest my-custom-host.domain.local/mylogin/foo-bar:1.0
docker image push my-custom-host.domain.local:5000/mylogin/foo-bar:1.0

Portus

Pour aller plus loin

Pour orchestrer les containers Docker, il existe Docker Swarm (à l’instar de Kubernetes) que l’on peut administrer avec une interface de type Portainer.

Il permet d’organiser la mise à jour des containers, leur scalabilité et bien plus.

On peut lui lier un outil packagé qui pourra monitorer tout ça : Swarmprom.

Pour ceux qui préfère Elastic Stack il existe le composant Dockerbeat.

Share Button

Laisser un commentaire.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.