Docker Registry est une application Python, son installation est simple:
git clone https://github.com/dotcloud/docker-registry.git cd docker-registry cp config_sample.yml config.yml pip install -r requirements.txt gunicorn --access-logfile - --log-level debug --debug -b 0.0.0.0:5000 -w 1 wsgi:application
Le registre exécute maintenant localhost (port 5000) dans une version de développement et utilise un stockage local. Évidemment, dans un environnement de production, on peut exécuter le registre sur le port 443 (ou 80 sur un réseau local) et le rendre accessible avec un nom d’hôte0
La méthode par défaut consistant à extraire des référentiels du registre central n'a pas changé:
docker pull ubuntu
docker push samalba/hipache
Implicitement, cela pousse et extrait chaque accès au registre central à index.docker.io, donc rien n’a changé avec le comportement par défaut et tous les exemples fonctionnent toujours.
Pour extraire ou pousser dans le registre local, il suffit d'ajouter l'emplacement du registre au nom du référentiel. Cela ressemblera à mon.registry.address:port/repository_name.
Par exemple pour pousser le référentiel “ubuntu” sur le registre local, qui s'exécute sur la machine locale, sur le port 5000:
# Tout d’abord, s'assurer qu'on a le référentiel "ubuntu": docker pull ubuntu # Ensuite, trouver l'image du référentiel Ubuntu docker images | grep ubuntu | grep latest ubuntu latest 8dbd9e392a96 12 weeks ago 263 MB (virtual 263 MB) # Tagger pour créer un référentiel avec l'emplacement complet du registre. # L'emplacement devient une partie permanente du nom du référentiel. docker tag 8dbd9e392a96 localhost.localdomain:5000/ubuntu # Enfin, pousser le nouveau référentiel sur son emplacement d'origine. docker push localhost.localdomain:5000/ubuntu
Oon utilise un domaine contenant un “.” Ici, c.-à-d. localhost.domain. Docker recherche un “.” (Séparateur de domaine) ou un “:” (séparateur de port) pour apprendre que la première partie du nom du référentiel est un emplacement et non un nom d'utilisateur. Si on indique localhost sans .localdomain ou: 5000, alors Docker croira que localhost est un nom d'utilisateur, comme dans localhost/ubuntu. Il essaiera alors de pousser vers le registre central par défaut. Docker qui contient un nom d’hôte et qui devrait plutôt être envoyé à l’emplacement spécifié.