dimanche 26 janvier 2014

Premiers pas avec Docker

On entends pas mal parler de Docker en ce moment, il s'agit d'un gestionnaire de conteneurs basé sur LXC qui s’intègre par exemple au sein d'une intégration continue pour lancer des tests automatisés ou encore permet le scaling dans le cadre d'une PAAS. Tout cela de manière plus légère qu'une virtualisation traditionnelle puisque les conteneurs partagent le kernel de l'OS qui les héberge.

Pour ma part c'est pour remplacer une architecture basée sur VMware ESXi que je vais étudier ici comment fonctionne Docker.

Je travaille sous Windows, je vais donc commencer par installer un CentOS dans une VirtualBox.
Vient ensuite l'installation de Docker, pour cela nous allons suivre la procédure pour RHEL.
yum install http://mirrors.ircam.fr/pub/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
yum -y install docker-io
service docker start
chkconfig docker on

Et voila docker est installé et opérationnel.

Docker possède un repository central pour les images, on peut rechercher une image avec la commande docker search.
sudo docker search centos
NAME               DESCRIPTION                                     STARS     OFFICIAL   TRUSTED
tianon/centos      CentOS 5 and 6, created using rinse instea...   5
tutum/centos       CentOS Docker image with SSH access             5
centos                                                             22
hnakamur/centos    CentOS 6.5 x86_64 base image                    1
zwxajh/centos      centos base system.                             1
kalefranz/centos                                                   2                    [OK]
backjlack/centos   This repository contains the following ima...   0
blalor/centos      Bare-bones base CentOS 6.5 image                0                    [OK]
chentoo/centos     centos 5.6 x86_64 image                         0
tutum/centos-6.4   CentOS 6.4 image with SSH access. Check th...   1                    [OK]

L'image centos est une image réalisée par l'équipe docker nous allons donc partir sur celle la.
sudo docker pull centos

Malheureusement le serveur est très lent et il est impossible de récupérer l'image https://github.com/dotcloud/docker/issues/2461

Nous allons donc utiliser un proxy pour télécharger l'image:
sudo service docker stop
sudo HTTP_PROXY=http://184.107.159.157:3128/ docker -d &
sudo docker pull centos

Le téléchargement passe de 1 heure à 3minutes et on peut maintenant récupérer l'image.
(attention j'utilise ici un proxy gratuit ce qui pose un problème de sécurité)

On désactive le proxy
sudo service docker restart

L'image est maintenant dans notre repository local, on peut lancer un conteneur basé sur cette image :
sudo docker run -i -t centos /bin/bash
Nous sommes alors dans un bash au sein d'un conteneur centos
exit
sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
d4f87abc2d4f        centos:6.4          /bin/bash           3 minutes ago      Exit 0                                  naughty_albattani 

C'est tout pour aujourd'hui, nous verrons dans un prochain article comment configurer nos différents conteneurs.