Docker
C'est quoi docker ?
Docker est un système de virtualisation légère. En gros, les containeurs docker sont des machines virtuelles où on ne virtualise pas le matériel (contrairement à une VM VirtualBox ou VMWare), ni le système d'exploitation. On utilise les capacités du noyau linux (comme LXC) pour conteneuriser les processus.
L'idée, c'est de créer des environnement applicatifs portables et prêt à l'emploi. Et ducoup c'est super pratique pour gérer une infrastructure sur un serveur, mais aussi pour lancer rapidement des applicatiions (comme des bases de données notamment) pour développer sur notre poste.
Pour résumer, un conteneur docker c'est une machine virutelle légère, qui contient les dépendances nécessaire à l'exécution d'un processus.
Installer Docker
Sur Linux (par exemple sur le serveur)
sudo apt update # Mettre à jours les paquets
sudo apt install apt-transport-https ca-certificates curl software-properties-common # Installer de quoi récupérer la clé de sécurité de docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - # Récupération de la clé de sécurité de docker
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable" # Ajout de dépôt APT de docker
sudo apt update # Mettre à jours les paquets
sudo apt install docker-ce # Installation de docker
sudo systemctl status docker # Pour vérifier que le service tourne bien
Sur windows (par exemple votre poste)
Il faut avoir l'édition "Pro" de Windows ainsi qu'avoir son système à jours. Il faut tout d'abord installer WSL (Windows Subsystem for Linux) :
wsl --install
Installation via Winget
winget install Docker.DockerDesktop
Installation via Chocolatey
choco install docker-desktop
Installation manuelle
Téléchargez et exécuter l'installeur via ce lien.
Concepts généraux
Notion d'image
Une image docker, c'est la recette du conteur, on la constuit à partir d'un Dockerfile, qui va décrire ce que contient l'image en terme de dépendances, librairies et exécutable, ainsi que comment le processus doit être exécuté.
Notion de conteneur
Un conteneur, c'est une instant d'une image en train de tourner.
Docker Hub
Docker desktop, est un dépôt central qui permet de publier des images docker, pour permettre à d'autre gens de les utiliser facilement.
Lancer un conteneur à partir d'une image
Pour la suite du tutoriel, ajoutez
sudo
à toutes les commandes docker si vous êtes sur Linux
Pour lancer une image docker, il faut utiliser la commande docker run
. Essayer de lancer (au hasard) un contenur à partir de l'image MySQL, disponible à ce lien.
La commande pour lancer le conteneur est la suivante :
docker run -p 3306:3306 --name mon-mysql -e MYSQL_ROOT_PASSWORD=monMdpTresSecret -d mysql:latest
Explications :
-
-p
: permet de spécifier les ouvertures de port du conteneur sous la formeexterne:interne
(externe = port de la machine hôte, interne = port du conteneur). Ici on forward le port3306
, qui est utilisé par MySQL -
--name mon-mysql
: donner le nom "mon-mysql" au conteneur -
-e
: permet de passer una variable d'environnement au conteneur. Ici on passeMYSQL_ROOT_PASSWORD
qui d'après la documentation de l'image permet de paramètrer le mot de passe de l'utilisateurroot
de la base de donnée. Les variables d'environnement suivantes de cettes image peuvent aussi être intéressantes :-
MYSQL_DATABASE
: crée automatiquement dans le conteneur une base de donnée au nom correspondant à la valeur de cette variable -
MYSQL_USER
etMYSQL_PASSWORD
: créer automatiquement dans le conteneur un utilisateur avec le login et password correspondant à la valeur de ces variables
-
-
-d
: permet de préciser l'image à utiliser et le tag, sous la formeimage:tag
. Le tag permet de préciser la version. On met souventlatest
pour avoir le plus récent.
Et voilà, le tour est joué ! Le conteneur est lancé. Pour voir vos conteneurs actifs, vous pouvez faire :
docker ps
Pour voir les logs du contenur vous pouvez faire :
docker logs -f mon-mysql