Notions fondamentales de Docker
Qu'est-ce que Docker ?
Docker est une plateforme open source qui permet aux développeurs de créer, déployer et exécuter des applications dans des conteneurs. Les conteneurs sont des paquets logiciels légers, autonomes et exécutables qui incluent tout ce dont une application a besoin pour fonctionner, y compris le code, l'environnement d'exécution, les outils système et les bibliothèques. Docker fournit un moyen cohérent et fiable d'emballer et de distribuer des applications, ce qui facilite le développement, les tests et le déploiement de logiciels.
Architecture de Docker
Docker utilise une architecture client-serveur, où le client Docker communique avec le démon Docker, qui est responsable de la création, de l'exécution et de la gestion des conteneurs Docker. Le démon Docker s'exécute sur la machine hôte, tandis que le client Docker peut s'exécuter sur la même machine ou sur une machine distante.
graph LR
A[Client Docker] -- API --> B[Démon Docker]
B -- Exécute les commandes --> C[Images Docker]
B -- Gère --> D[Conteneurs Docker]
Images Docker
Les images Docker sont les éléments constitutifs des conteneurs. Ce sont des modèles en lecture seule qui contiennent le code de l'application, l'environnement d'exécution, les outils système et les bibliothèques nécessaires à l'exécution de l'application. Les images Docker sont créées à l'aide d'un Dockerfile, qui est un fichier texte contenant les instructions pour la création de l'image.
## Dockerfile
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y nginx
COPY index.html /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Conteneurs Docker
Les conteneurs Docker sont des instances d'images Docker. Ce sont des environnements légers, portables et autonomes qui exécutent des applications. Les conteneurs sont isolés du système hôte et les uns des autres, garantissant un comportement d'application cohérent et fiable.
## Exécuter un conteneur
docker run -d -p 80:80 my-nginx-app
Réseaux Docker
Docker fournit des fonctionnalités de réseau intégrées qui permettent aux conteneurs de communiquer entre eux et avec le système hôte. Docker prend en charge plusieurs pilotes de réseau, notamment les réseaux bridge, host et overlay.
## Créer un réseau bridge
docker network create my-network
## Exécuter un conteneur sur le réseau
docker run -d --network my-network my-app
Volumes Docker
Les volumes Docker sont utilisés pour persister les données générées par un conteneur. Les volumes peuvent être utilisés pour stocker les données de l'application, les fichiers de configuration et d'autres informations persistantes. Les volumes peuvent être montés sur le système de fichiers hôte ou sur d'autres conteneurs.
## Créer un volume
docker volume create my-data
## Exécuter un conteneur avec un volume
docker run -d -v my-data:/app my-app