Docker Registry est une application logicielle qui vous permet de créer et de stocker vos images au sein de votre organisation.
Vous pouvez également créer et télécharger vos images sur le Docker Registre public du hub. Mais ces images deviennent publiques et tout le monde peut accéder à vos images et les utiliser. Il est donc recommandé d'utiliser le registre privé Docker qui vous permet de contrôler et de protéger vos images.
Dans ce tutoriel, je vais vous expliquer comment configurer un registre privé Docker sur Ubuntu 18.04.
Requirements
- Deux serveurs Ubuntu avec les informations d'identification racine
- Une adresse IP statique sur les deux serveurs
Getting Started
Avant de commencer, vous devrez configurer la résolution du nom d'hôte sur les deux systèmes. Ainsi, les deux systèmes peuvent communiquer entre eux par nom d'hôte.
Pour ce faire, exécutez la commande suivante sur les deux systèmes:
echo "192.168.0.100 server" >> /etc/hosts
echo "192.168.0.102 client" >> /etc/hosts
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Install Docker
Ensuite, vous devrez installer le package Docker sur les deux systèmes. Par défaut, Docker n'est pas disponible dans le référentiel par défaut Ubuntu 18.04. Vous devrez donc les ajouter.
Tout d'abord, installez les packages requis avec la commande suivante:
apt-get install apt-transport-https software-properties-common ca-certificates curl -y
Ensuite, ajoutez le référentiel Docker avec la commande suivante:
wget https://download.docker.com/linux/ubuntu/gpg
apt-key add gpg
echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" | tee /etc/apt/sources.list.d/docker.list
Ensuite, mettez à jour le référentiel et installez Docker avec la commande suivante:
apt-get update -y
apt-get install docker-ce -y
Une fois l'installation terminée, vérifiez l'état du docker avec la commande suivante:
systemctl status docker
Vous devriez voir la sortie suivante:
docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2019-05-01 15:08:45 UTC; 7min ago Docs: https://docs.docker.com Main PID: 2658 (dockerd) Tasks: 8 CGroup: /system.slice/docker.service └─2658 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Install Docker Registry Container
Tout d'abord, vous devrez installer le conteneur de registre sur votre système serveur. Vous pouvez le faire en exécutant la commande suivante:
docker pull registry
Une fois l'image de registre téléchargée, vous devriez voir la sortie suivante:
Using default tag: latest
latest: Pulling from library/registryc
87736221ed0: Pull complete
1cc8e0bb44df: Pull complete
54d33bcb37f5: Pull complete
e8afc091c171: Pull complete
b4541f6d3db6: Pull complete
Digest: sha256:3b00e5438ebd8835bcfa7bf5246445a6b57b9a50473e89c02ecc8e575be3ebb5
Status: Downloaded newer image for registry:latest
Ensuite, démarrez le conteneur de registre avec la commande suivante:
docker run -d -p 5000:5000 --restart=always --name registry registry
Vous pouvez voir le conteneur de registre en cours d'exécution avec la commande suivante:
docker ps
Vous devriez voir la sortie suivante:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4912e461745f registry "/entrypoint.sh /etc…" About a minute ago Up About a minute 0.0.0.0:5000->5000/tcp registry
Create a Docker Container Image on the Client System
Votre serveur de registre est maintenant prêt à être utilisé. Il est temps de créer une image de conteneur Docker sur le système client.
Tout d'abord, connectez-vous au système client et créez un fichier docker pour créer l'image du serveur Web Nginx:
mkdir Image
cd Image
nano dockerfile
Ajoutez les lignes suivantes:
FROM ubuntu:18.04
LABEL project="Nginx Web Server Image"
LABEL maintainer "hitjethva@gmail.com"
RUN \a
pt-get update && \
apt-get install -y nginx && \
rm -rf /var/lib/apt/lists/* && \
echo "\ndaemon off;" >> /etc/nginx/nginx.conf && \
chown -R www-data:www-data /var/lib/nginx
# Define mountable directories.
VOLUME ["/etc/nginx/sites-enabled", "/etc/nginx/certs", "/etc/nginx/conf.d", "/var/log/nginx", "/var/www/html"]
# Define working directory.WORKDIR /etc/nginx
# Define default command.CMD ["nginx"]
# Expose ports.
EXPOSE 80
EXPOSE 443
Enregistrez et fermez le fichier. Ensuite, créez une image Nginx en exécutant la commande suivante:
docker build -t ubuntu:nginx .
Après avoir créé l'image Nginx avec succès, vous devriez voir la sortie suivante:
---> bc6e61406108
Step 5/9 : VOLUME ["/etc/nginx/sites-enabled", "/etc/nginx/certs", "/etc/nginx/conf.d", "/var/log/nginx", "/var/www/html"]
---> Running in 30832b7ff816
Removing intermediate container 30832b7ff816
---> 1940ec1c2225Step 6/9 : WORKDIR /etc/nginx
---> Running in 88755ef2d7c8
Removing intermediate container 88755ef2d7c8
---> 4fe930c96a73Step 7/9 : CMD ["nginx"]
---> Running in c8d492317d88
Removing intermediate container c8d492317d88
---> 3218acfd15f8Step 8/9 : EXPOSE 80
---> Running in 35921ef45db9Removing intermediate container 35921ef45db9
---> a6a299b86a6dStep 9/9 : EXPOSE 443
---> Running in 755441cefe2f
Removing intermediate container 755441cefe2f
---> 9be7dc6b0825
Successfully built 9be7dc6b0825
Successfully tagged ubuntu:nginx
Ensuite, vous pouvez vérifier l'image générée avec la commande suivante:
docker images
Vous devriez voir votre image nginx dans la sortie suivante:
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu nginx 9be7dc6b0825 About a minute ago 161MB
ubuntu 18.04 d131e0fa2585 4 days ago 102MB
registry latest f32a97de94e1 7 weeks ago 25.8MB
Ensuite, vous devrez renommer votre image nginx au format «registryserver: portnumber / image name: tag».
Vous pouvez le faire avec la commande suivante:
docker tag ubuntu:nginx server:5000/ubuntu:nginx
Upload Nginx Image on Private Registry Server
Vous pouvez maintenant télécharger votre image Nginx générée sur Private Registry Server à l'aide de la commande push:
docker push server:5000/ubuntu:nginx
Une fois l'image téléchargée avec succès, vous devriez voir la sortie suivante:
The push refers to repository [server:5000/ubuntu]
2e5us8en4s9d: Pushed
l1is9e9d8j7e: Pushed
nginx: digest: sha256:aa0d8fi49dir0d7rn33nee122b size: 1862
Vous pouvez également télécharger l'image téléchargée à partir du serveur de registre avec la commande suivante:
docker pull server:5000/ubuntu:nginx
J'espère que vous avez maintenant suffisamment de connaissances pour configurer votre propre serveur de registre docker privé sur un serveur de production. Si vous cherchez à obtenir plus de travaux pratiques sur Docker, consultez ceci Cours en ligne.