Docker : leçon 1

Anne virtualisation docker

Ces notes viennent pour la plupart de la leçon 1 sur le site officiel de Docker.

Installation

$ wget -qO- https://get.docker.com/ | sh

Pour vérifier que ça marche :

$ sudo docker run hello-world

Si ça ne marche pas, il peut être nécessaire de rebooter la machine.

Pour ne pas avoir à utiliser sudo pour lancer docker, on peut ajouter l’utilisateur au groupe docker en faisant :

$ sudo usermod -aG docker anne

Attention, pour que ça soit pris en compte, il faut lancer un nouveau shell. Et on peut alors lancer :

$ docker run hello-world

Pour avoir des information sur les versions du client et du serveur:

$ docker version

Les images

Beaucoup d’images sont disponibles dans le Docker Hub. Il y a de nombreux dépôts (repository) avec des images officielles ou non. Il y a par exemple un dépôt officiel Ubuntu.

Pour voir les images déjà chargées :

$ docker images

Une image a un identifiant unique, mais est généralement identifiée grâce au nom du dépôt et au tag. Le tag dépend de l’organisation du dépôt, mais il représente généralement la version. Le tag par défaut est latest.

Créer un container à partir d’une image

docker run ubuntu:14.04 echo "Coucou !"

Cette commande fait plusieurs choses:

  • elle télécharge l’image si on ne l’a pas déjà,
  • elle initialise un container à partir de cette image,
  • elle lance la commande (ici echo).

Aller dans le container

Pour aller dans le container, il faut utiliser les options :

  • -i pour connecter STDIN au container,
  • -t pour lancer un pseudo-terminal.

On lance donc par exemple :

$ docker run -i -t ubuntu:14.04 /bin/bash

On peut ensuite faire ce que l’on veut, comme par exemple :

  • ajouter un utilisateur : adduser germaine
  • l’ajouter au groupe des sudoer : adduser germaine sudo
  • se connecter avec cet utilisateur : su germaine
  • installer vim : sudo apt-get install vim

Si on sort du container (exit pour déconnecter l’utilisateur, puis exit pour quitter bash), et qu’on relance la même commande, on ouvre un nouveau container. L’utilisateur créé précédemment n’existe pas, et vim n’est pas installé. Le premier container a été fermé définitivement. La durée de vie d’un container est juste celle du process qui a été lancé.

Identifier les containers

Pour identifier un container, on peut en demander la liste :

  • $ docker ps montre les containers qui tournent ;
  • $ docker ps -a montre aussi les containers qui ont été fermés.

La première colonne donne un identifiant, et la dernière, le nom. Celui-ci est généré par docker quand on ne l’a pas spécifié.

Lancer un container en arrière plan

Pour exécuter un container en arrière plan, on utilise l’option -d. Par exemple pour lancer 100 fois ping :

$ docker -d ubuntu:14.04 ping 127.0.0.1 -c 100

Cette commande rend l’identifiant long du container. On peut retrouver son identifiant court et son nom avec ps comme précédemment.

On a besoin de l’identifier pour observer sa sortie :

$ docker logs xxxx

Si on ajoute l’option -f, on peut suivre la sortie (comme avec tail -f).

Voir aussi :