Infrastructure

Docker et conteneurs : à quoi ça sert

2024-10-07 · Datacampus

Vous avez développé une application. Elle tourne parfaitement sur votre machine. Vous la déployez sur le serveur… et rien ne marche. La version de PHP n'est pas la bonne, il manque une extension, la config est différente.

Docker résout ce problème : il empaquette l'application avec tout ce dont elle a besoin (code, dépendances, configuration) dans un conteneur portable et reproductible.

Conteneur vs. machine virtuelle

Un conteneur n'est pas une machine virtuelle. La différence est fondamentale :

Machine virtuelle

Embarque un système d'exploitation complet (noyau, drivers, services). Lourde (plusieurs Go), lente à démarrer (minutes). Isolation totale.

Conteneur

Partage le noyau de l'hôte et n'embarque que l'application et ses dépendances. Léger (quelques Mo à quelques centaines de Mo), démarrage instantané (secondes). Isolation au niveau processus.

Les conteneurs utilisent des fonctionnalités du noyau Linux (namespaces pour l'isolation et cgroups pour la limitation des ressources) plutôt que de la virtualisation matérielle. C'est ce qui les rend si légers.

Les concepts clés de Docker

Image

Un modèle en lecture seule qui contient l'application, ses dépendances et sa configuration. Construite à partir d'un Dockerfile. Comparable à un modèle de VM, mais beaucoup plus léger.

Conteneur

Une instance en cours d'exécution d'une image. On peut lancer plusieurs conteneurs à partir de la même image. Chaque conteneur est isolé des autres.

Volume

Un espace de stockage persistant. Par défaut, les données d'un conteneur disparaissent quand il s'arrête. Les volumes permettent de conserver les données (bases, fichiers uploadés).

Docker Compose : orchestrer plusieurs conteneurs

Une application web typique nécessite plusieurs services : un serveur web, une base de données, un cache, parfois un worker en arrière-plan. Docker Compose permet de définir tous ces services dans un seul fichier (docker-compose.yml) et de les démarrer ensemble avec une seule commande.

# Exemple : WordPress + MySQL + Redis
services:
  wordpress:
    image: wordpress:6.4
    ports:
      - "8080:80"
    volumes:
      - wp-data:/var/www/html

  mysql:
    image: mysql:8.0
    volumes:
      - db-data:/var/lib/mysql

  redis:
    image: redis:7-alpine

Un docker compose up -d et les trois services démarrent, connectés entre eux sur un réseau interne. Reproductible, versionnable, portable.

Cas d'usage concrets

  • Développement local — chaque développeur a le même environnement, quel que soit son OS. Plus de « ça marche sur mon poste ».
  • Déploiement simplifié — l'application fonctionne de la même manière en développement, en staging et en production.
  • Isolation de services — chaque application dans son conteneur, avec ses propres dépendances. Pas de conflit entre un projet PHP 7 et un projet PHP 8.
  • Auto-hébergement — installer Nextcloud, Matomo, Mailcow, Gitea… en quelques minutes avec Docker Compose, sans conflit de dépendances.
  • CI/CD — les pipelines de test et de déploiement utilisent des conteneurs pour garantir un environnement propre à chaque exécution.

Les limites à connaître

  • Ce n'est pas de la sécurité absolue — les conteneurs partagent le noyau de l'hôte. L'isolation est bonne mais inférieure à celle d'une VM. Pour des workloads hautement sensibles, la VM reste préférable.
  • La persistance demande de l'attention — sans volumes correctement configurés, les données sont perdues au redémarrage du conteneur. C'est une source fréquente de problèmes.
  • Le réseau peut être complexe — le mapping de ports, les réseaux internes Docker, les proxy inverses : ça fonctionne bien, mais il faut comprendre comment les pièces s'emboîtent.
  • Les images doivent être maintenues — une image Docker basée sur une version vulnérable de Debian ou de Node.js ne se met pas à jour toute seule. Il faut rebuilder régulièrement.

Docker vs. Podman

Docker n'est pas le seul moteur de conteneurs. Podman, développé par Red Hat, est une alternative compatible qui fonctionne sans démon root (rootless by default). La plupart des commandes Docker fonctionnent telles quelles avec Podman. Pour les environnements de production où la sécurité est critique, Podman est une option à considérer.

Chez Datacampus : nous utilisons Docker en production pour déployer des services comme Mailcow, Matomo et d'autres applications. Sur nos VPS infogérés, nous installons et configurons Docker pour les clients qui en ont besoin.

— Datacampus

Hébergement souverain, éco-responsable et infogéré

Serveurs en France, énergie renouvelable, support humain. Découvrez ce que Datacampus peut faire pour vous.

Découvrir nos solutions Nous contacter

Articles sur le même sujet

Infrastructure

Ceph : comprendre le stockage distribué

Architecture RADOS, algorithme CRUSH, réplication, erasure coding, intégration Proxmox : tout comprendre sur Ceph, le système de stockage distribué qui propulse nos clusters NVMe.

← Retour au blog