Logiciels pour survivre avec Docker

Posté par  (site web personnel) . Édité par NeoX, Nÿco, Benoît Sibaud et Ontologia. Modéré par patrick_g. Licence CC By‑SA.
25
22
avr.
2014
Linux

Docker a déjà été présenté via un tutoriel pour manipuler les conteneurs et une présentation de la gestion des containers sur LinuxFR. Il s'agit d'un système de conteneurs qui étend ce que fait le système de cloisonnement Linux Containers LXC sous Linux. Cette dépêche présente un certain nombre de logiciels utiles pour compléter Docker.

Gestion du réseau

Pipework

Pipework est un script de configuration réseau pour Docker/LXC. C'est un complément à Docker, lequel ne se charge pas directement de configurer le réseau (en tous cas pas suffisamment).

Site officiel et doc

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

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.

Configuration en deux minutes
Documentation officielle

Serveur PXE dans un container

Un container pour booter en PXE des machines sous Debian.
Les explications et le dockerfile.

Gestion des containers

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.

Ça 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).

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

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.

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

Baseimage

Baseimage c'est le contraire de busybox. Ça 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.

Les explications
Le dépôt git

Créer son propre dépôt Docker

Docker registry : un logiciel pour créer son propre dépôt Docker.
Sur Github

Aller plus loin

  • # CoreOs VS Boot2Docker

    Posté par  (site web personnel) . Évalué à 4.

    Quel est l'avantage de Boot2Docker vis-à-vis de CoreOS. Ce dernier est super pour faire du déploiement massive épaulé par une configuration délivrée par etcd. J'ai l'impression que Boot2Docker est surtout pratique pour une petite installation sur une seule machine, correct ?

    • [^] # Re: CoreOs VS Boot2Docker

      Posté par  (site web personnel) . Évalué à 2.

      Oui, d'après ce que j'ai pu en comprendre, boot2docker est plutôtant fait pour une utilisation à petite échelle contrairement à CoreOS.

      Après, Docker étant jeune, il y a sûrement des projets dans l'écosystème qui se marchent sur les pieds…

  • # Supervisor

    Posté par  . Évalué à 6.

    Il manque supervisor à la liste qui permet d'avoir des une sorte d'init simple dans les conteneurs.

    Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

  • # Et project atomic ?

    Posté par  (site web personnel) . Évalué à 8.

    Sinon, y a ça qui a été annoncé la semaine dernière :

    http://www.projectatomic.io/

    docker + selinux pour la sécurité + ostree pour les updates atomics + cockpit pour l'interface web et systemd pour la gestion des limites et la centralisation des logs. Le tout sur une base de distro qu'on connait ( fedora/centos pour le moment, mais rien n'empeche de prendre de la debian si quelqu'un code la partie qui fait un arbre ostree à partir d'un .deb, l'auteur serait très heureux d'ajouter ça )

    Rajoute aussi geard, pour orchestrer les containers et les déployer, et source-to-image, qui va prendre un depot git et le combiner avec une image docker pour le deployer directement dans atomic ( https://github.com/openshift/docker-source-to-images ).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.