Docker¶
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¶
Permettre à l'utilisateur courant d'utiliser Docker¶
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 :¶
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¶
- Docker Documentation
- Optimisez votre déploiement en créant des conteneurs avec Docker - OpenClassrooms
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.