Docker est un logiciel open source qui permet d’automatiser le déploiement d’applications en les empaquetant, ainsi que ses dépendances dans des containers virtuels. La force de ce concept est que ses containers peuvent ensuite être déployé sur n’importe plateforme où peut être installer l’API de Docker.

Le Concept

Docker s’appuie à la base sur le format de Conteneur Linux standard LXC auquel il a adossé une API qui permet d’exécuter des processus de manière isolée. En effet, contrairement aux machines virtuelles classiques qui utilisent un système hôte (« guest OS »), les conteneurs Docker ne contiennent que les applications/librairies en utilisant le système d’exploitation de l’infra. La figure ci-dessous résume bien le concept.

Comme c’est le système hôte qui lance directement les conteneurs son éxécution est aussi rapide que si il s’èxècutait directement sur celui-ci. De plus même si nous ne sommes pas sur une machine virtuelle les ressources utilisé par le container sont isolés de son hote.

Un container Docker, un dockerfile, est un simple fichier texte qui définit une séquence de commandes UNIX. Ces commandes vont s’exécuter les unes après les autres permettant pour finaliser l’installation d’une application. On retrouve le principe d’héritage car un conteneur peut en utiliser un autre pour en étendre ses fonctionnalités. Du coup les conteneurs sont très léger et peuvent être stocké sur un repository central pour être utilisé par d’autres instance docker.

Disponibilité de Docker

Docker est disponible sur les plateformes suivantes :

  • Les distributions Linux : Ubuntu, Fedora, RHEL, Centos, Gentoo, ArchLinux, openSUSE, CRUX,…
  • Les système de cloud : Amazon EC2, Google Compute Engine et Rackspace.
  • Les systèmes d’exploitations Mac Os X et Windows. Docker s’appuyant sur le noyau Linux pour qu’il puisse fonctionner sur Windows il utilise un mini VM Linux tournant sous VirtualBox.

Installation de Docker sur Ubuntu 14.04

Docker est disponible sur toutes les versions disponibles depuis la 12.04 L.T.S. Ici je ne documenterai que l’installation sur Ubuntu 14.04. Pour les autres versions je vous renvoi sur la page du projet : docs.docker.com

Le package docker.io disponible sur cette version d’Ubuntu utilise la version 1.0.1 de docker. Par conséquent nous allons utiliser le dépôt du projet :
Dans une fenêtre Terminal Ctrl+Alt+T tapez les commandes suivantes :

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
sudo sh -c "echo deb https://get.docker.com/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
sudo apt-get update
sudo apt-get install lxc-docker

Pour terminer l’installation et vous obliger à lancer toutes les commandes en sudo il suffit d’ajouter votre compte utilisateur au groupe docker :

sudo addgroup nom_de_votre_user docker

Quittez votre session et reconnectez vous.

Test de Docker

Pour vérifier que l’installation de Docker est terminé lançons simplement la commande suivante :

docker run -i -t ubuntu /bin/bash

Normalement cette commande va télécharger tout ce qu’il faut pour créer un container Ubuntu et vous ouvrir une session sur celle-ci.

bob@bob-fixe:~$ docker run -i -t ubuntu /bin/bash
Unable to find image ‘ubuntu:latest’ locally
ubuntu:latest: The image you are pulling has been verified
511136ea3c5a: Pull complete
fe95bf7d5f50: Pull complete
9a4594fe74ea: Pull complete
8c4b1edcceea: Pull complete
ed5a78b7b42b: Pull complete
Status: Downloaded newer image for ubuntu:latest
root@85919c5c2c97:/# df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 17G 5.7G 9.9G 37% /
none 17G 5.7G 9.9G 37% /
tmpfs 3.7G 0 3.7G 0% /dev
shm 64M 0 64M 0% /dev/shm
/dev/disk/by-uuid/255ccf07-63aa-4091-a54d-704e4e835e0d 17G 5.7G 9.9G 37% /etc/hosts
tmpfs 3.7G 0 3.7G 0% /proc/kcore

Pour le quitter un simple appuie de la combinaison des touches Ctrl+D est suffisant. Nous verrons dans des prochains billets comment récupérer et gérer tous les containers disponible dans le repository de Docker.En attendant vous pouvez lire la documentation des commandes de docker. Il suffit de tapez docker help pour la doc de la commande ou docker help [command] pour l’obtenir.

Plus d’infos : docker.com