jeudi 7 avril 2016

Docker registry avec certificat auto-signé (--insecure-registry)

Démarrer le registry sur le serveur

docker run -d -p 5000:5000 --restart=always --name registry \
  -v {chemin_du_fs_stockage_des_donnes}/data:/var/lib/registry \
  registry:2f

Authentification auto-signé (Voir https://docs.docker.com/registry/insecure/ ) 

myregistrydomain => ip, dns du serveur hébergeant le registry
Attention! Pas du tout adapté pour un environnement de PROD ! 

Génération du certificat sur le serveur hébergeant le registry

 mkdir -p certs && openssl req \
  -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \
  -x509 -days 365 -out certs/domain.crt
Be sure to use the name myregistrydomain.com as a CN.


Démarrage du registry avec les certificats

docker run -d -p 5000:5000 --restart=always --name registry \
-v {chemin_contenant_les_crt_key}:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key registry:2

Coté client

Attention testé uniquement sur Ubuntu, la facon diffère selon les distributions. Cela doit fonctionner sur distribution qui sont basés Debian sur car Ubuntu est développé a partir de celui-ci.
RedHat & les autres distribution ont leur propre facon d'ajout de certificat.


  1. Récupérer le certificat généré utilisé par le registry
  2. Sous Ubuntu aller dans /usr/local/ca-certificates
  3. Déposer le certificat update-ca-certificates
  4. service docker stop 
  5. vi /etc/default/docker
  6. Ajouter DOCKER_OPTS="--insecure-registry {url-registry}:5000" (Ex: DOCKER_OPTS="--insecure-registry myregistrydomain.com:5000" )
  7. service docker start 


Commandes 


myregistrydomain => ip, dns du serveur hébergeant le registry

Déposer une image sur le registry

docker push myregistrydomain.com:5000/{images}/{tag}

Obtenir une image du registry

docker pull myregistrydomain.com:5000/{images}/{tag}

Lister les images dans le docker repository

Sur le serveur hébergeant le registry ont peut trouver les repositories correspondant aux images déposés dans le registry

ls -l {chemin_du_fs_stockage_des_donnes}/data/docker/registry/v2/repositories