📝 BLOG

Docker et Containerisation : Concepts de Base et Utilisation

Docker empaquette les applications dans des conteneurs pour un déploiement cohérent et portable. Ce guide couvre les bases de Docker, l'écriture de Dockerfile et la gestion des conteneurs.

Mise à jour :

Préparé par: Gsetsoft

Docker et Containerisation : Concepts de Base et Utilisation

Qu'est-ce que Docker ?

Docker est une plateforme qui empaquette les applications et leurs dépendances dans des conteneurs. Les conteneurs sont des environnements d'exécution légers et isolés.

VM vs Container : Les machines virtuelles exécutent un système d'exploitation complet (Go). Les conteneurs partagent le noyau de l'OS hôte et occupent des Mo.

Cohérence : Résout le problème 'ça marche sur ma machine'. Les environnements de développement, test et production utilisent le même conteneur.

Portabilité : Les conteneurs fonctionnent sur toute plateforme compatible Docker (Linux, Windows, Mac, cloud).

Concepts Fondamentaux de Docker

Image : Modèle pour un conteneur. Stockée sous forme de couches en lecture seule. Construite à partir d'un Dockerfile.

Container : Instance en cours d'exécution d'une image. Chaque conteneur s'exécute comme un processus isolé.

Dockerfile : Fichier texte qui définit comment construire une image. Contient des instructions comme FROM, RUN, COPY, CMD.

Registry : Repository qui stocke et distribue des images. Docker Hub est le registry public le plus populaire.

Volume : Stockage utilisé pour persister les données du conteneur. Les données sont conservées même si le conteneur est supprimé.

Écriture d'un Dockerfile

FROM node:18-alpine : Utilisez Node.js 18 (Alpine Linux) comme image de base. Alpine est une image de base de petite taille.

WORKDIR /app : Définissez le répertoire de travail sur /app. Toutes les commandes suivantes s'exécutent dans ce répertoire.

COPY package*.json ./ : Copiez package.json et package-lock.json. Installez les dépendances avec RUN npm install.

COPY . . : Copiez tout le code source. Créez le build de production avec RUN npm run build.

EXPOSE 3000 : Spécifiez que le conteneur écoute sur le port 3000. Définissez la commande à exécuter au démarrage du conteneur avec CMD ["npm", "start"].

Commandes Docker de Base

docker build -t myapp:1.0 . : Construisez l'image depuis Dockerfile. Taguez l'image avec nom:version en utilisant -t.

docker run -p 3000:3000 myapp:1.0 : Exécutez le conteneur. Mappez le port hôte au port du conteneur avec -p.

docker ps : Listez les conteneurs en cours d'exécution. docker ps -a : Listez tous les conteneurs (y compris les arrêtés).

docker stop <container_id> : Arrêtez le conteneur. docker rm <container_id> : Supprimez le conteneur.

docker images : Listez les images locales. docker rmi <image_id> : Supprimez l'image.

Docker Compose

Docker Compose est un outil pour définir et gérer des applications multi-conteneurs. Configuré avec le fichier docker-compose.yml.

Services : Chaque service est un conteneur. Définissez des services comme web (frontend), api (backend), db (base de données).

Volumes : Définissez des volumes pour la persistance des données. networks : Créez des réseaux pour la communication inter-services.

docker compose up : Démarrez tous les services. docker compose down : Arrêtez et supprimez tous les services.

docker compose up -d : Exécutez en mode detached (arrière-plan). docker compose logs -f : Suivez les logs.

Meilleures Pratiques

Petites images : Utilisez des images de base Alpine ou distroless. Supprimez les dépendances de build de l'image finale avec multi-stage build.

Layer caching : COPY les dépendances (qui changent rarement) d'abord, le code (qui change fréquemment) ensuite. Cela optimise le build cache.

.dockerignore : Ignorez les fichiers inutiles (node_modules, .git, logs). Cela réduit le build context.

Sécurité : Utilisez un utilisateur non-root au lieu de root. Créez un utilisateur avec RUN adduser --disabled-password appuser.

Health check : Utilisez l'instruction HEALTHCHECK pour effectuer une vérification de santé du conteneur. Docker redémarre automatiquement les conteneurs unhealthy.

Votre choix de confidentialité

Les cookies essentiels assurent sécurité et sessions. Les visites de base sont comptées ; votre accord active des analyses supplémentaires. Politique de cookies