Docker est un logiciel Open Source qui a été distribué à partir de mars 2013. Docker est une plateforme de virtualisation par conteneur. C’est un outil qui utilise des conteneurs pour faciliter la création, le déploiement et l’exécution d’une application. Il permet de lier une application et ses dépendances à l’intérieur d’un conteneur.

Qu’est ce qu’un conteneur ?

Un conteneur est une forme de virtualisation des systèmes d’exploitation. C’est un regroupement d'unités logicielles, codes, ainsi que toutes ses dépendances permettant de lancer une application dans un environnement fiable, stable et qui est immuable d’une machine à une autre.

Les avantages des conteneurs par rapport aux machines virtuelles

  • Les conteneurs ne nécessitent pas d’allocation de ressource physique.
  • Les conteneurs démarrent plus vite.
  • Les conteneurs permettent aux entreprises d’emballer d'avantages d’application dans un seul serveur physique.

Qu'est-ce que Docker ?

À qui est destiné Docker ?

Docker est utilisé par les développeurs et par les administrateurs systèmes. Les développeurs utilisent Docker car ils peuvent se focaliser sur le code sans avoir à se soucier du système sur lequel il sera exécuté.

Les administrateurs systèmes utilisent Docker pour installer, configurer et démarrer des conteneurs.

Pourquoi utiliser Docker ?

Une application contenant des dépendances ne dépend plus de l’hôte sur lequel il est développé mais du conteneur dans lequel il est packagé. La conteneurisation est beaucoup plus performante que la virtualisation et les outils Docker sont faciles à utiliser.

Comment fonctionne Docker ?

Qu'est-ce que Docker ?

Ici on retrouve un schéma expliquant le fonctionnement de Docker. On retrouve à droite la partie Registry qui est une application côté serveur permettant de stocker et distribuer des images Docker.

La partie de gauche correspond à la personne qui utilise Docker (développeurs, administrateurs systèmes), ce client va donc exécuter des commandes afin de récupérer, construire et exécuter des images Docker.

Le Docker Host va faire le lien entre les commandes du client et le côté Registry. C’est le Docker Daemon qui interprète les différentes commandes Docker.

Qu’est-ce qu’un volume dans Docker ?

Un volume dans Docker est un type de stockage qui permet de persister les données d’un conteneur (par défaut aucune donnée n’est persistée). Ce qui signifie que s’il n’y a pas la présence de volume, un conteneur perd toutes ses données lorsqu’il est arrêté.

Dans Docker on retrouve 3 types de stockages :

  • Volume
  • Bind mounts
  • Tmpfs mount

Une fois un volume créé, le client aura juste à démarrer le conteneur dans le volume et les données de ce conteneur seront persistées.

Qu’est ce qu’un réseau dans Docker ?

Pour que les conteneurs puissent communiquer entre eux, Docker permet la création de réseau. Les réseaux permettent une meilleure isolation des conteneurs. Docker utilise plusieurs drivers pour connecter les conteneurs entre eux.

  • Il y a 5 pilotes réseaux pour les conteneurs :

    Bridge (driver utilisé par défaut)
  • Host
  • Overlay
  • Macvlan
  • None

On retrouve le “Bridge”, qui est le pilote par défaut dans Docker, les conteneurs qui utilisent ce type de pilote ne peuvent communiquer qu'entre eux, et ils ne sont pas accessibles depuis l’extérieur.

Le pilote réseau “Host” permet aux conteneurs d’utiliser la même interface que l’hôte et il supprime donc la couche réseau de Docker. Comme l’isolation des conteneurs a été supprimée, les conteneurs sont donc accessibles depuis l’extérieur.

Le pilote réseau Overlay est un réseau distribué entre plusieurs hôtes.

Le pilote réseau Macvlan est destiné aux applications qui s’attendent à être directement connecté à un réseau physique. Ce réseau attribue une adresse Mac à chaque conteneur.

Le pilote réseau None interdit toute connexion que ce soit interne ou externe aux conteneurs.

Quelques commandes importantes de Docker

Docker images

  • docker images : Lister toutes les images dans docker en local
  • docker image inspect ‘image-name’ : Affiche le détail de l’image renseignée.
  • docker image prune : Supprimer les images non utilisées.
  • docker image pull ‘image-name’ : Récupérer une image du Docker Hub.
  • docker image rm ‘image-name’ : Supprimer l’image renseigné
  • docker run ‘image-name’ : Exécute l’image renseignée qui permet la construction d’un conteneur à partir de l’image

Docker container

  • docker container ls –all : Lister tous les conteneurs
  • docker container stop ‘container-name’ : Arrête le conteneur renseigné
  • docker container rm ‘container-name’ : Supprime le conteneur renseigné
  • docker container start ‘container-name’ : Lance le conteneur renseigné
  • docker container create ‘image-name’ : Crée un conteneur à partir de l’image renseigné
  • docker container prune : Supprimer les conteneurs non-utilisés
  • docker container restart ‘container-name’ : Relance le conteneur renseigné
  • docker rename ‘container-name’ ‘new-container-name’ : Renommer un conteneur

Docker network

  • docker network create -d ‘network-type’ ‘network-name’ : Création d’un réseau avec un type précis et un nom.
  • docker network ls : Lister tous les réseaux existants.
  • docker network prune : Supprimer les réseaux inutilisés
  • docker network rm ‘network-name’ : Supprimer le réseau renseigné
  • docker network connect ‘network-name’ ‘container-name’ : Permet de connecter un conteneur à un réseau spécifique.
  • docker network disconnect ‘network-name’ ‘container-name’ : Permet de déconnecter un conteneur à un réseau spécifique

Docker volume

  • docker volume ls : Lister les volumes
  • docker volume create ‘volume-name’ : Création d’un volume avec un nom précis
  • docker volume rm ‘volume-name’ : Suppression d’un volume précis
  • docker volume prune : Suppression des volumes inutilisés

Et voilà, vous savez tout ou presque sur Docker !

 

 

Vous avez besoin de plus d'infos ou d'une formation sur Docker ? Next Decision se fera un plaisir de vous accompagner sur votre projet. Contactez-nous !