Aller au contenu

Docker

Docker logo

Le conteneur permet de faire de la virtualisation légère, c'est-à-dire qu'il ne virtualise pas les ressources, il ne crée qu'une isolation des processus. Le conteneur partage donc les ressources avec le système hôte.

Un conteneur est immuable. Un conteneur ne doit pas stocker de données qui doivent être pérennes, car il les perdra (à moins que vous les ayez pérennisées). Mais si vous souhaitez en local mettre une base de données dans un conteneur Docker, vous devez créer un volume pour que celui-ci puisse stocker les données de façon pérenne.

Dans la vision Docker, un conteneur ne doit faire tourner qu'un seul processus. Ainsi, dans le cas d'une stack LAMP (Linux, Apache, MySQL, PHP), nous devons créer 3 conteneurs différents.

Docker

Installation

Voir la documentation officielle : Install Docker Engine on Ubuntu | Docker Documentation.

Tester l'installation

$ sudo docker run hello-world

Permettre à l'utilisateur courant d'utiliser Docker

$ sudo usermod -aG docker $USER

Ressources

Commande utiles

Commande Description
$ docker run hello-world lancer le conteneur hello-world
$ docker ps visualiser l'ensemble des conteneurs en cours de fonctionnement
$ docker ps -a idem, avec les conteneurs arrêtés
$ docker stop <id> arrêter le conteneur <id>
$ docker system prune faire de la place (supprime les conteneurs arrêtés, etc.)
$ docker system prune --volumes idem, avec les volumes orphelins
$ docker exec -ti <id> bash « entrer » dans le conteneur Docker
$ docker pull hello-world récupérer hello-world sur le Docker Hub sans l’exécuter
$ docker images lister les images
$ docker volume ls -f dangling=true lister les volumes orphelins
$ docker volume rm $(docker volume ls -q -f dangling=true); supprimer les volumes orphelins

Options pour docker run :

  • -d : Détacher le conteneur du processus principal de la console. Il vous permet de continuer à utiliser la console pendant que votre conteneur tourne sur un autre processus ;
  • -p : Définir l'utilisation de ports.

Docker Hub

Le Docker Hub est un service fourni par Docker Inc spécialisé dans le stockage d'image pour Docker.

Docker Compose

Docker Compose est un outil écrit en Python qui permet de décrire, dans un fichier YAML, plusieurs conteneurs comme un ensemble de services.

Installation

Voir la documentation officielle : Install Docker Compose.

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose

Tester l'installation :

$ docker-compose --version
docker-compose version 1.26.0, build d4451659

Commande utiles

Commande Description
$ docker-compose ps visualiser le statut d'une stack Docker Compose
$ docker-compose up lancer la création de l'ensemble des conteneurs
$ docker-compose up -d lancer la création de l'ensemble des conteneurs en tâche de fond
$ docker-compose logs -f visualiser les logs d'une stack Docker Compose
$ docker-compose stop arrêter une stack Docker Compose
$ docker-compose down supprimer tous les conteneurs d'une stack Docker Compose
$ docker-compose config valider la syntaxe de votre fichier docker-compose.yml

Ressources

Lexique

  • CI : Continous Integration, ou Intégration Continue ;
  • CD : Continous Delivery, ou Livraison Continue ;
  • statefull : le conteneur peut gérer un état (exemple avec l'utilisation d'une base de donnée) ;
  • stateless : le conteneur ne peut pas gérer d'état.