Logiciels de l’écosystème Docker
Présentation d’un certain nombre de logiciels utiles pour travailler dans un environnement dockerisé.
I- Réseau
1- Pipework
Script de configuration réseau pour Docker/LXC.
Complément à Docker car Docker n’est pas chargé de configurer le réseau.
Installation
apt-get install arping bridge-utils
git clone https://github.com/jpetazzo/pipework.git
mv pipework/pipework /usr/local/bin/pipework
Utilisation
Créer un réseau privé entre deux conteneurs et l’hôte :
pipework br1 conteneur1 192.168.1.1/24@192.168.1.254
pipework br1 conteneur2 192.168.1.2/24@192.168.1.254
ip addr add 192.168.1.254/24 dev br1
2- dnsmasq
DNSMasq c’est un mini serveur qui vous évite d’installer des services plus lourds (comme Bind, ISC Dhcpd, …). Il n’est pas spécifiquement lié à l’environnement Docker mais il peut être très utile pour se monter très simplement un service de noms et une distribution d’adresses.
3- Serveur PXE dans un container
Un container pour booter en PXE des machines sous Debian.
Les explications et le dockerfile.
II- Gestion des containers
1- Interface Web (DockerUI ou Shipyard)
Docker peut aussi s’administrer avec une interface Web. C’est peut-être un gadget mais ça permet à ceux qui ne connaissent pas Docker de faire de l’administration basique (redémarrer un container, …).
J’aime bien DockerUI qui a le mérite d’être simple.
Ca s’installe directement dans un container :
docker build -t crosbymichael/dockerui github.com/crosbymichael/dockerui
docker run -d -p 9000:9000 -v /var/run/docker.sock:/docker.sock crosbymichael/dockerui -e /docker.sock
Dans ce domaine, il y a aussi Shipyard qui semble plus complet, qui propose une API et qui fonctionne en client serveur (avec le shipyard-agent sur les containers).
2- nsenter
Problème habituel dans Docker : une fois qu’on lance un container en mode démon, on ne peut plus rentrer dedans.
Pour résoudre ça, on va avoir besoin de nsenter fourni par le paquet util-linux > 2.23. Sous debian/ubuntu, c’est la version 2.20 donc il faut télécharger et compiler les sources :
cd /tmp
curl https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz | tar -zxf-
cd util-linux-2.24
./configure --without-ncurses
make nsenter
cp nsenter /usr/local/bin
Et maintenant on se crée un script pour Docker (/usr/local/sbin/dkenter) :
#!/bin/bash
CNAME=$1
CPID=$(docker inspect --format '{{ .State.Pid }}' $CNAME)
nsenter --target $CPID --mount --uts --ipc --net --pid
Je lance un container en démon :
docker run --name lamp1 -d lamp-maria supervisord -n
Je ne peux plus m’attacher dessus alors j’utilise dkenter pour obtenir un shell. Quand j’en ressort, le container continue de tourner.
dkenter lamp1
root@ff94c159642f# ...
root@ff94c159642f# exit
3- Boot2Docker
Boot2Docker est une distribution Linux ultra-légère pour servir d’hôte Docker. On peut télécharger les images ISO ou suivre le manuel.
4- Busybox
Busybox est un système Linux ultra léger (2,5 Mo, qui dit mieux ?). Il existe en image Docker sur le dépôt officiel Docker
5- Baseimage
Baseimage c’est le contraire de busybox ! Il part du principe que l’image Ubuntu ou Debian fournie de base par Docker doit être complétée pour fournir d’autres services tels qu’un process init correct, un syslog, un cron, et un serveur SSH.
III- Créer son propre dépôt Docker
Docker registry : Un logiciel pour créer son propre dépôt Docker.
J’ai pas fouillé beaucoup là-dessus.
Y en a qui l’ont fait …