- Qu’est ce que Docker ?
Docker est une plateforme open-source pour les administrateurs système et les développeurs. Il permet de structurer et de faire fonctionner vos projets dans un environnement virtualisé et isolé appelé Container. Docker s’appuie sur le système d’exploitation sur lequel il repose et n’embarque donc pas la partie système ni le noyaux à la différence d’une VM. Ceci le rend plus léger et également « transportable » sur un autre OS.
Docker Machines Virtuelles
Source : docker.com
Pour en savoir plus je vous recommande de parcourir la documentations très bien faite le site de projet docker.com. Voici également un lien vers un article du blog d’it-connect.fr pour débuter avec les containers.
-
- Registre
Docker repose sur un système de template permettant de déployer rapidement vos applications. Une communauté participe à l’élaboration de ces modèles. Le site vous permet également de vous inscrire, de stocker et de publier vos projets de façon gratuite. Néanmoins si certains de vos projet doivent rester privé. Nous allons donc voir comments configurer une machine sous Ubuntu 14.04 en tant que registre privé Docker.
-
-
- Installation
-
Première étape, il est nécessaire d’installer quelques pré-requis :
sudo apt-get -y install build-essential python-dev libevent-dev python-pip liblzma-dev
Ensuite, utilisez pip pour installer la dernière version du registre Docker.
sudo pip install docker-registry
-
-
- Configuration
-
Changez de dossier :
cd /usr/local/lib/python2.7/dist-packages/docker_registry/lib/../../config
Puis servez-vous du fichier config_sample.yml comme base de configuration en le copiant :
sudo cp config_sample.yml config.yml
Dans un environnement de test vous pouvez laisser le fichier dans l’état. N’hésitez à y aller faire un tour !
Maintenant vous pouvez tester votre serveur :
gunicorn --access-logfile - --debug -k gevent -b 0.0.0.0:5000 -w 1 docker_registry.wsgi:application
Si la sortie ressemble à ceci :
2014-11-07 21:40:19 [24559] [INFO] Starting gunicorn 19.1.0
2014-11-07 21:40:19 [24559] [INFO] Listening at: http://127.0.0.1:5000 (24559)
2014-11-07 21:40:19 [24559] [INFO] Using worker: gevent
2014-11-07 21:40:19 [24565] [INFO] Booting worker with pid: 24565
C’est bon votre registre fonctionne ! Vous pouvez tuez le process avec Ctrl + C.
Créez ensuite un répertoire de log pour votre registre :
sudo mkdir -p /var/log/registre-docker
Créez également un fichier de démarrage :
sudo nano /etc/init/registre-docker.conf
Et ajoutez dedans :
description "Registre Docker"
start on runlevel [2345]
stop on runlevel [016]
respawn
respawn limit 10 5
script
exec gunicorn --access-logfile /var/log/registre-docker/access.log --error-logfile /var/log/registre-docker/server.log -k gevent --max-requests 100 --graceful-timeout 3600 -t 3600 -b localhost:5000 -w 8 docker_registry.wsgi:application
end script
Ensuite, démarrer le service :
sudo service registre-docker start
-
-
- Sécurité
-
Installez Nginx et apache2-utils pour faciliter la création d’un fichier d’authentification et sa lecture :
sudo apt-get -y install nginx apache2-utils
Créez un utilisateur (si vous ajouter un second utilisateur, enlevez l’option -c):
sudo htpasswd -c /etc/nginx/registre-docker.htpasswd nom_utilisateur
Créez votre nouveau fichier de site :
sudo nano /etc/nginx/sites-available/registre-docker
Et copiez cette configuration :
upstream registre-docker {
server localhost:5000;
}
server {
listen 8080;
server_name mon.registre.docker.com;
ssl on;
ssl_certificate /etc/ssl/certs/registre-docker;
ssl_certificate_key /etc/ssl/private/registre-docker;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 0;
chunked_transfer_encoding on;
location / {
auth_basic "Restricted";
auth_basic_user_file registre-docker.htpasswd;
proxy_pass http://registre-docker;
}
location /_ping {
auth_basic off;
proxy_pass http://registre-docker;
}
location /v1/_ping {
auth_basic off;
proxy_pass http://registre-docker;
}
}
Les paramètres SSL dans la configuration sont activés. Il nous faut donc créer des certificats auto-signés.
Commencez par créer les dossiers :
mkdir ~/certs
cd ~/certs
En premier générez une clé racine :
openssl genrsa -out dockerCA.key 2048
Puis générez un certificat racine :
openssl req -x509 -new -nodes -key dockerCA.key -days 10000 -out dockerCA.crt
Entrez les réponses que vous voulez.
Créez la clé pour votre serveur :
openssl genrsa -out registre-docker.com.key 2048
Faite une demande de certificat signé :
openssl req -new -key registre-docker.com.key -out registre-docker.com.csr
Attention : pour « CommonName » entrez le domaine du serveur !
N’entrez pas non plus de « Challenge password » .
Pour finir, signez votre certificat et copiez les fichiers aux endroits indiqués plus haut dans la configuration du site sur Nginx.:
openssl x509 -req -in registre-docker.com.csr -CA dockerCA.crt -CAkey dockerCA.key -CAcreateserial -out registre-docker.com.crt -days 10000
sudo cp registre-docker.com.crt /etc/ssl/certs/registre-docker
sudo cp registre-docker.com.key /etc/ssl/private/registre-docker
Le certificat étant auto-signé, exécutez la commande suivante :
sudo mkdir /usr/local/share/ca-certificates/cert-docker
sudo cp dockerCA.crt /usr/local/share/ca-certificates/cert-docker
sudo update-ca-certificates
-
-
- Mise en route
-
Activer le site et redémarrez le serveur Nginx :
sudo ln -s /etc/nginx/sites-available/registre-docker /etc/nginx/sites-enabled/registre-docker
sudo service Nginx restart
Vous pouvez tester le serveur web avec le login et le mot de passe créé précédemment:
curl https://login:mot_de_passe@localhost:8080
Vous pouvez également tester votre serveur depuis un navigateur une machine distante et essayez de vous connecter.
Si vous voyez
"\"docker-registry server\""
alors votre serveur est fonctionnel.
Dans la partie 2 nous verrons comment se connecter sur votre serveur avec une machine distante.
Laisser un commentaire