Intro à Docker 🐳

Publié le 30/01/2025

Docker : Simplifiez la gestion de vos applications 🚀

Docker est un outil qui a transformé le monde du développement logiciel. Avec Docker, vous pouvez empaqueter votre application et ses dépendances dans un conteneur portable et reproductible. Cet article explore les bases de Docker et ses fonctionnalités avancées, comme les volumes, les réseaux et Docker Compose, pour vous aider à comprendre pourquoi cet outil est si populaire.


Qu’est-ce que Docker ?

Docker est une plateforme qui permet de créer, déployer et exécuter des applications dans des conteneurs. Mais qu’est-ce qu’un conteneur ? C’est une unité légère et portable qui contient tout ce dont une application a besoin pour fonctionner : le code, les bibliothèques, et même le système d’exploitation.

Pourquoi utiliser Docker ?

  • Portabilité : Un conteneur fonctionne de manière identique, que ce soit sur votre machine locale, un serveur ou un cloud.
  • Isolation : Chaque conteneur est indépendant, ce qui évite les conflits entre environnements.
  • Efficacité : Les conteneurs partagent le noyau du système d’exploitation, ce qui les rend plus légers que les machines virtuelles.

Les concepts clés de Docker

Images

Une image Docker est un modèle en lecture seule utilisé pour créer des conteneurs. Elle contient tout ce qu’il faut pour exécuter une application.

Conteneurs

Un conteneur est une instance en cours d’exécution d’une image. Vous pouvez démarrer, arrêter ou supprimer un conteneur sans affecter l’image d’origine.

Docker Hub

Docker Hub est une bibliothèque en ligne où vous pouvez trouver des images prêtes à l’emploi ou partager les vôtres.


Les fonctionnalités avancées de Docker

Volumes : La gestion des données persistantes 📄

Par défaut, les données créées dans un conteneur sont éphémères. Si vous supprimez le conteneur, les données disparaissent. Les volumes permettent de conserver les données indépendamment du cycle de vie des conteneurs.

Exemple :

docker run -v /chemin/local:/chemin/conteneur my-container

Dans cet exemple, /chemin/local est un répertoire de votre machine hôte qui est monté dans le conteneur. Cela permet aux données d’être persistantes et accessibles même après l’arrêt du conteneur.

Réseaux : Connecter vos conteneurs 🌐

Docker fournit plusieurs options pour gérer les réseaux entre conteneurs :

  1. Bridge : Un réseau par défaut utilisé pour connecter des conteneurs sur une même machine.
  2. Host : Permet à un conteneur d’utiliser directement l’interface réseau de l’hôte.
  3. Overlay : Idéal pour connecter des conteneurs sur plusieurs hôtes, souvent utilisé avec Docker Swarm.

Exemple :

Pour connecter deux conteneurs sur un même réseau :

docker network create mon-reseau
docker run --network=mon-reseau --name=conteneur1 my-container

Docker Compose : Orchestration simplifiée 🗉

Docker Compose est un outil qui permet de définir et de gérer plusieurs conteneurs avec un fichier YAML. Cela simplifie énormément le déploiement d’applications complexes.

Exemple de fichier docker-compose.yml :

version: '3.8'
services:
  web:
    image: nginx
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
  db:
    image: postgres
    environment:
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=password

Pour lancer tous les services définis :

docker-compose up

Avec Docker Compose, vous pouvez facilement gérer les dépendances entre les services, comme lier une base de données à une application web.


Construire et tagger une image Docker

Un Dockerfile est un fichier contenant un ensemble d’instructions pour construire une image Docker.

Exemple de Dockerfile :

# Utilisation de l'image de base officielle Python
FROM python:3.9-slim

# Définition du répertoire de travail
WORKDIR /app

# Copie des fichiers nécessaires
COPY . /app

# Installation des dépendances
RUN pip install --no-cache-dir -r requirements.txt

# Définition du point d'entrée
ENTRYPOINT ["python", "app.py"]

Construction et exécution de l’image

  1. Construire l’image et la tagger :
docker build -t mon-application:latest .
  1. Vérifier que l’image a bien été créée :
docker images
  1. Exécuter un conteneur à partir de l’image :
docker run -d -p 5000:5000 --name mon-conteneur mon-application:latest

Les options avancées de docker run

  • -d : Exécute le conteneur en arrière-plan.
  • -p 5000:5000 : Redirige le port 5000 de l’hôte vers le conteneur.
  • --name mon-conteneur : Donne un nom spécifique au conteneur.
  • -t : Alloue un pseudo-terminal (utile pour les interactions avec le conteneur).
  • -i : Garde le conteneur interactif (permet d'entrer des commandes en direct).

Exemple d’exécution interactive :

docker run -it ubuntu bash

Cela lance un conteneur Ubuntu avec une session interactive Bash.


Cas d’utilisation de Docker

  • Développement : Travaillez sur des environnements reproductibles sans avoir à configurer chaque poste manuellement.
  • Tests : Exécutez vos tests dans des environnements isolés.
  • Production : Déployez des applications scalables et portables sur n’importe quel serveur.

Conclusion : Docker, une révolution pour les développeurs

Docker est plus qu’un simple outil : c’est une nouvelle façon de concevoir et de déployer des applications. Avec des fonctionnalités comme les volumes, les réseaux et Docker Compose, il permet de créer des environnements flexibles et puissants. Si vous ne l’avez pas encore adopté, il est temps d’explorer ce monde fascinant.