Docker est un outil qui peut empaqueter une application et ses dépendances dans un conteneur isolé, qui pourra être exécuté sur n’importe quel serveur.
Principaux concepts
Docker engine | “Moteur” qui permet d’exécuter des conteneurs |
Docker image | Modèle qui permet de créer des conteneurs |
Conteneur Docker | Instance en cours d’exécution d’une image Docker |
Network | Permet la communication entre les différents conteneurs |
Volumes | Permet de sauvegarder des données d’un conteneur |

Docker engine
- Logiciel qui permet de créer, gérer et exécuter des conteneurs Docker sur une machine hôte. Il comprend le moteur de conteneurisation, les outils de ligne de commande, le Docker API et le Docker Hub1
- Disponible pour de multiples systèmes d’exploitation tels que Windows, GNU/Linux et macOS. Il permet aux développeurs de créer des applications portables qui peuvent s’exécuter sur différents environnements
- Docker Engine permet également de créer des clusters de conteneurs pour gérer des applications à grande échelle et améliorer les performances
1Docker Hub est un dépôt public d’images de conteneurs, où de nombreuses entreprises et particuliers peuvent publier des images prédéfinies de solutions
Docker image
- Paquet léger, portable et autonome, contient tout ce dont une application a besoin pour s’exécuter :
- le code
- les bibliothèques
- les outils système
- les fichiers de configuration
- L’image est créée à partir d’un fichier Dockerfile, qui définit la configuration de l’environnement de l’application et les dépendances requises
- L’image peut être partagée et déployée sur différents environnements, ce qui rend les applications plus portables et facilite la collaboration entre les développeurs
Conteneur Docker
- Instance en cours d’exécution d’une image Docker
- Permet de créer des environnements de développement et de production reproductibles, garantit un exécution identique sur tous les environnements
- Offre une isolation de l’environnement, de sorte que les applications s’exécutent de manière isolée et sécurisée, sans avoir besoin de virtualisation complète ou de ressources matérielles dédiées
Docker Network
- Permet aux conteneurs Docker de communiquer entre eux et avec des ressources externes de manière sécurisée et efficace
- Les réseaux Docker peuvent être utilisés pour isoler des conteneurs sur un même hôte, ou pour connecter des conteneurs à travers des hôtes sur un réseau distribué
- Docker mets à disposition 4 modes pour le paramétrage du réseau
- Bridge (mode par défaut)
- Les conteneurs qui se trouvent sur le même hôte peuvent communiquer entre eux en utilisant un réseau bridge
- Docker crée un sous-réseau distinct pour chaque réseau bridge et attribue une adresse IP unique à chaque conteneur qui se connecte au réseau
- Chaque nouveau conteneur Docker est automatiquement connecté à ce réseau, sauf si un réseau personnalisé est spécifié (interface docker0)
- Le réseau bridge est le type de réseau le plus couramment utilisé
- Pour que les conteneurs sur le réseau bridge puissent communiquer ou être accessibles du monde extérieur, vous devez configurer le mappage de port
- Host
- Dans ce mode, les conteneurs utilisent le même réseau que l’hôte Docker
- Les conteneurs n’ont pas d’adresse IP distincte et partagent l’adresse IP de l’hôte
- Ce mode est plus performant que le mode bridge, mais il ne fournit pas d’isolation réseau
- Overlay
- Ce mode de réseau permet de connecter des conteneurs qui se trouvent sur différents hôtes Docker
- Les conteneurs peuvent communiquer entre eux en utilisant un réseau overlay qui utilise une technologie de tunneling pour encapsuler les paquets de données et les transmettre entre les hôtes
- Docker gère de manière transparente le routage de chaque paquet vers et depuis le bon hôte et le bon conteneur
- Macvlan
- Ce mode de réseau permet aux conteneurs d’avoir une adresse IP propre sur le réseau local
- Il permet également aux conteneurs de se connecter à des réseaux existants en utilisant une adresse MAC virtuelle
- C’est parfois le meilleur choix lorsque vous utilisez des applications qui s’attendent à être directement connectées au réseau physique, car le driver Macvlan vous permet d’attribuer une adresse MAC à un conteneur, le faisant apparaître comme un périphérique physique sur votre réseau
- None
- Ce mode de réseau désactive complètement le réseau pour le conteneur
- C’est le type de réseau idéal, si vous souhaitez interdire toute communication interne et externe avec votre conteneur, car votre conteneur sera dépourvu de toute interface réseau (sauf l’interface loopback)
- Bridge (mode par défaut)
Docker Volume

- Permet aux conteneurs Docker de stocker et d’accéder aux données
- Permet de créer des volumes persistants qui peuvent être partagés entre plusieurs conteneurs
- Permet d’isoler les données des conteneurs pour faciliter la sauvegarde
- Facilite le déploiement d’applications avec des exigences de stockage complexes, telles que les bases de données et les applications à haute disponibilité.
Concept docker
FROM nodejs
COPY hello.js /app
ENTRYPOINT hello.js

Il ne doit rien y avoir d’important sur un container, juste l’application et ses dépendances.
IMAGE : gère la partie applicative
VOLUMES : gère la partie stockage