Premiers pas avec Docker sous Debian 8

Docker est un logiciel libre qui permet de facilité le déploiement d’applications isolées dans des containers logiciels pour être exécutées dans des environnements variés. Docker est un outil très utilisé dans des environnements de développement pour résoudre les problématiques d’intégration (CI) et de déploiement continu (CD).

Présentation

Contrairement aux machines virtuelles reposant sur une infrastructure physique, Docker permet de mutualiser la couche physique et la couche système d’exploitation en empaquetant l’application et ses dépendances (librairies, fichiers de configuration …).
Avantages : un seul OS à administrer, tous les containers sont isolés.

Voici en images la différence entre Container et VM:

Un registre public maintenu par une communauté active permet à Docker de mettre à disposition des containers prêt à être exécutés très rapidement.

Docker est basé sur LXC (Linux Containers) et intègre les éléments suivants :

Fonctionnalité du noyau Linux pour limiter, compter et isoler les ressources (CPU, RAM, etc.) utilisées par un groupe de processus.

Gestion avancée des permissions aussi bien au niveau des applications qu’au niveau du système de fichiers.

Fonctionnalité du noyau Linux qui permet l’isolation, afin de s’assurer qu’un container ne puisse pas en affecter un autre.

Fonctionnalité qui permet de changer la racine d’un processus, afin de l’isoler sur un système par mesure de sécurité.

Docker propose des services pour effectuer facilement différentes actions : créer, éditer, publier et exécuter des containers. Vous entendrez souvent parler de containers, d’images et de DockerFile :

Fichier source qui contient les instructions, éléments à installer, c’est un fichier de configuration.

Compilation d’un fichier DockerFile pour former une image portable, prête à être déployée

Exécution d’une image, mise en container d’une image.


Installation

Pour installer Docker sous Debian 8, il vous suffira de passer par l’outil de gestion des paquets :

Sous Debian 7, il est nécessaire d’ajouter la source deb http://http.debian.net/debian wheezy-backports main dans le fichier sources.list.
On pourra ensuite exécuter les commandes suivantes pour mettre à jour notre liste de source, installer wheezy-backports :

Installez Docker grâce à la commande d’exécution d’un script suivante :

Une fois Docker installé, il vous suffira de lancer le service :


Création d’un container

Dans cet exemple, nous installerons un container Nginx depuis les images disponibles dans les dépôts Docker :

Pensez à orienter votre choix entre la description, la popularité et le fait que ce soit un container officiel ou non.
Nous allons rapatrier l’image container Nginx officielle :

On vérifie notre liste d’image:

On peut constater qu’elle a été bien rapatriée :

On installe le container :

On vérifie que le container est bien installé :

Vous pouvez voir votre container ainsi exécuté (retrouvez le détail de la commande docker ps plus bas) puis on démarre notre container :

Par défaut, Docker utilise du NAT pour faire correspondre des ports d’entrée sur le serveur renvoyés vers les ports d’écoute des différents containers avec l’option -p :

Le port d’hôte correspond au port sur lequel vous devez contacter l’hôte pour accéder au service, le port container correspond au port vers lequel sera redirigée la requête au niveau du container.
Nous allons créer un second container en rajoutant cet argument :

Vous pourrez voir que le service est actif en ouvrant votre navigateur sur http://IP_HOTE:1234


DockerFile

Vous pouvez créer votre propre container à partir d’un fichier de configuration nommé Dockerfile.
Nous allons créer un container Debian et installer un serveur apache2 accessible depuis l’extérieur.
Voici le contenu du fichier Dockerfile :

Nous pouvons maintenant créer notre container depuis le Dockerfile avec cette commande :

On installe notre container en mappant le port 5555 de l’hôte vers le port http du container :

Vous pouvez désormais vérifier que le serveur apache est accessible depuis cette URL : http://IP_HOTE:5555


Commandes utiles

La commande suivante permet d’afficher la liste des containers en cours d’exécution :

Identifiant du container.

Identifiant nominatif de l’image du container.

Commande passée en paramètre lorsque le container a été créé.

Date de création du container.

État du container.

Les différentes redirections de ports configurées.

Nom aléatoire donné au conteneur, ceci est personnalisable grâce à l’option -name lors de l’exécution docker run.

Voici quelques autres commandes utiles :

Vous pouvez trouver toutes les images docker sur https://hub.docker.com/explore/

Retrouvez toutes les commandes liées à docker dans l’aide :

Premiers pas avec Docker sous Debian 8
Vote