ITSkillsCenter
Développement Web

Docker / Podman avancé 2026 : guide complet (multi-stage, networking, sécurité)

3 دقائق للقراءة

Docker reste en 2026 le standard de fait pour conteneuriser des applications, et Podman son challenger sans daemon avec une compatibilité 95 %. Pour les développeurs et sysadmins ouest-africains, maîtriser les patterns avancés Docker (multi-stage builds, volumes nommés, networking custom, healthchecks, security context) fait la différence entre une infra fragile et une infra production-ready. Voici le guide complet 2026.

Ce guide général couvre les patterns avancés. Les articles connexes détaillent : multi-stage builds optimisés, Docker vs Podman, Docker Compose en production, Docker rootless et sécurité.

Docker en 2026

  • Docker Desktop : avec license payante pour entreprises > 250 employés ou > 10M USD CA
  • Docker Engine : open-source Apache 2.0, gratuit illimité
  • BuildKit : builder moderne avec cache distribué et builds parallèles
  • Docker Compose v2 (intégré au docker CLI)
  • Docker Hub : registry public, plan gratuit limité (200 pulls par 6h pour anonymes)

Podman

  • Compatibilité Docker à 95 % : alias docker = podman fonctionne souvent
  • Sans daemon : pas de processus root permanent
  • Rootless par défaut : conteneurs sous user normal
  • Pods (groupes de conteneurs partageant le réseau) — concept Kubernetes
  • Génération de YAML Kubernetes depuis pods

Multi-stage build optimisé

# Dockerfile multi-stage pour app Node.js
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production && \
    cp -R node_modules /tmp/prod_node_modules
RUN npm ci
COPY . .
RUN npm run build

FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
USER node

COPY --from=builder --chown=node:node /tmp/prod_node_modules ./node_modules
COPY --from=builder --chown=node:node /app/dist ./dist
COPY --from=builder --chown=node:node /app/package.json ./

EXPOSE 3000
HEALTHCHECK --interval=30s --timeout=3s --retries=3 \
  CMD node -e "require('http').get('http://localhost:3000/health',(r)=>process.exit(r.statusCode===200?0:1))"

CMD ["node", "dist/server.js"]

Image finale ~150 Mo au lieu de 1 Go avec naïve approach. Voir notre tutoriel multi-stage.

Volumes nommés vs bind mounts

  • Bind mount : -v /host/path:/container/path — partage un dossier hôte. Pratique en dev.
  • Named volume : -v mydata:/data — Docker gère le storage. Backupable, déplaçable, ne pollue pas le host.
  • tmpfs : --tmpfs /tmp — RAM-only, parfait pour caches éphémères

Networking custom

# Créer un réseau privé
docker network create app-net

# Lancer plusieurs services dessus
docker run -d --network app-net --name api -p 3000:3000 myapp:latest
docker run -d --network app-net --name db postgres:16

# api peut résoudre 'db' via DNS interne

Healthchecks

Critique pour zero-downtime deployments. Le orchestrateur (Coolify, Swarm, K8s) attend que le healthcheck pass avant de couper l’ancien container.

HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \
  CMD curl -f http://localhost:3000/health || exit 1

Security context

  • USER non-root : ne JAMAIS run en root dans le conteneur
  • --read-only : container avec FS lecture seule, sauf volumes mountés
  • --cap-drop=ALL --cap-add=NET_BIND_SERVICE : retirer toutes les capabilities
  • --security-opt=no-new-privileges : empêcher escalade privilèges
  • Scan des images avec trivy ou Snyk avant push en prod

BuildKit cache

DOCKER_BUILDKIT=1 docker build --cache-from type=registry,ref=registry/myapp:cache -t myapp:latest .

Cache distribué via registry : builds CI plus rapides, équipe partage le cache.

Adaptation Afrique de l’Ouest

Sur connexion lente, optimisez la taille des images : multi-stage + alpine + slim variants. Une image 150 Mo se transfère en 30s sur 4G, vs 5 min pour 1 Go. Important pour les déploiements fréquents.

Pour aller plus loin

Besoin d'un site web ?

Confiez-nous la Création de Votre Site Web

Site vitrine, e-commerce ou application web — nous transformons votre vision en réalité digitale. Accompagnement personnalisé de A à Z.

À partir de 250.000 FCFA
Parlons de Votre Projet
Publicité