Retour au blog

Intro à Docker 🐳

Marre des "ça marche chez moi" ? Découvrez comment Docker simplifie le dev, le test et le déploiement. Un premier pas vers les conteneurs.

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.

Partager :