Docker est une plateforme de conteneurisation qui permet aux développeurs et administrateurs système de créer, déployer et exécuter des applications dans des conteneurs, des environnements isolés et légers.
Contrairement aux machines virtuelles, qui virtualisent un système d'exploitation entier, les conteneurs Docker partagent le noyau du système d'exploitation hôte, ce qui les rend beaucoup plus légers et plus rapides à démarrer.
Docker a révolutionné la manière dont les applications sont développées, testées et déployées, en favorisant une approche DevOps agile.
Un conteneur est une unité standardisée de logiciel qui encapsule le code de l'application ainsi que toutes ses dépendances, garantissant ainsi que l'application fonctionne de manière cohérente dans n'importe quel environnement. Les conteneurs Docker sont créés à partir d'images Docker.
Une image Docker est un modèle en lecture seule utilisé pour créer des conteneurs. Elle contient tout ce dont une application a besoin pour s'exécuter : le code, les dépendances, les configurations et les outils système. Les images peuvent être empilées, ce qui permet d'ajouter progressivement des couches à mesure que des modifications sont apportées à l'application ou à son environnement.
Un Dockerfile est un fichier texte contenant une série d'instructions pour assembler une image Docker. Chaque instruction dans un Dockerfile correspond à une commande qui est exécutée sur la base d'une image existante (par exemple, l'installation de packages, la configuration d'environnement, etc.), et chaque commande crée une nouvelle couche dans l'image finale.
Docker peut être installé sur une variété de systèmes d'exploitation, y compris Linux, macOS, et Windows. Voici une méthode d'installation sur une machine Linux :
# Mise à jour du package manager
apt-get update
# Installation des paquets nécessaires pour utiliser le dépôt Docker
apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
# Ajout de la clé GPG officielle de Docker
mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Ajout du dépôt Docker stable
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
# Installation de Docker
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Vérification de l'installation
docker --version
Pour exécuter un conteneur Docker basé sur une image existante, utilisez la commande suivante :
docker run hello-world
Cette commande récupère l'image hello-world depuis le Docker Hub (si elle n'est pas déjà présente localement) et l'exécute dans un conteneur. Le conteneur affichera alors un message de confirmation indiquant que Docker fonctionne correctement.
Gestion des conteneurs
Vous pouvez lister les conteneurs en cours d'exécution avec :
docker ps
Pour lister tous les conteneurs (en cours d'exécution ou arrêtés) :
docker ps -a
Pour arrêter un conteneur :
docker stop <container_id>
Pour supprimer un conteneur :
docker rm <container_id>
Pour créer votre propre image Docker, vous devez d'abord écrire un Dockerfile. Par exemple :
# Utilise une image de base
FROM ubuntu:20.04
# Installe Node.js
RUN apt-get update && apt-get install -y nodejs npm
# Définit le répertoire de travail
WORKDIR /app
# Copie les fichiers locaux dans le conteneur
COPY . /app
# Installe les dépendances de l'application
RUN npm install
# Démarre l'application
CMD ["npm", "start"]
Ensuite, pour construire l'image :
docker build -t mon-image .
Cette commande crée une image nommée mon-image à partir du Dockerfile dans le répertoire courant.
Les images Docker peuvent être partagées via Docker Hub ou d'autres registres de conteneurs.
Connectez-vous à Docker Hub :
docker login
Taguez l'image avec votre nom d'utilisateur Docker Hub :
docker tag mon-image mon-utilisateur/mon-image
Poussez l'image :
docker push mon-utilisateur/mon-image
¶ Avantages de Docker
Portabilité : Les conteneurs peuvent être exécutés de manière identique sur n'importe quelle machine.
Isolation : Les applications fonctionnent de manière isolée, ce qui réduit les conflits de dépendances.
Efficacité : Les conteneurs sont légers et démarrent rapidement.
Gestion facilitée : Docker permet de gérer facilement les versions d'applications et leurs dépendances.
¶ Conclusion
Docker est devenu un outil incontournable pour les équipes DevOps en raison de sa capacité à rationaliser le développement, le test et le déploiement des applications.
En isolant les applications et en simplifiant la gestion des environnements, Docker permet aux développeurs de se concentrer sur l'écriture du code plutôt que sur la gestion des environnements complexes.