Docker est un logiciel libre permettant de lancer des applications dans des containers.
Avec la gestion des containers, Docker simplifie l’installation et la mise en production d’applications. Ces dernières s’exécutent de façon autonome sur une seule machine physique ou à travers un éventail de machines isolées.
Prenons deux exemples :
Dans chaque exemple, vous devez installer 4 applications avec leurs dépendances.
- Sans Docker – Une VM par application, vous devez préparer quatre VM avec les dépendances respectives pour chaque application et par VM.
- Avec Docker – Une VM avec Docker et c’est terminé !
Les images Docker fonctionnent sur le même principe que Git et télécharge leurs dépendances automatiquement et indépendamment sous forme d’image, et cela permet de garder votre machine hôte propre. Docker permet un gain de ressources non négligeable.
Un container ? une image ? le Dockerfile ? c’est quoi ?
Le Dockerfile est un fichier de configuration pour créer les images. Il décrit exactement ce qui doit être installé.
Une image Docker est comme une template d’une VM. Elle contient les fichiers de vos applications et est figée.
Un container, est constitué d’une copie de l’image de votre application, et de ses dépendances. C’est dans ce container que ce réalise l’exécution des processus : code, runtime, outils système, bibliothèque.
Installation
Installation des dépendances.
1 |
sudo apt-get update && sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y |
Ajouter le repository.
1 2 |
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo apt-key fingerprint 0EBFCD88 |
1 |
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" |
Installer Docker.
1 |
sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io -y |
Utilisation
Pour créer un container vous pouvez rechercher vos applications sur le site suivant : hub.docker.com.
Fait attention de ne pas récupérer une image d’un repo non officiel.
Pour MySQL par exemple :
1 |
sudo docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag |