Le mode rootless de Docker (et de Podman par défaut) réduit massivement la surface d’attaque : si un attaquant compromet un conteneur, il n’obtient pas root sur l’hôte.
Voir notre guide Docker complet.
Activer Docker rootless
# Installer dépendances
sudo apt install -y uidmap dbus-user-session
# En tant qu'utilisateur normal
dockerd-rootless-setuptool.sh install
# Activer au démarrage
systemctl --user enable docker
loginctl enable-linger $(whoami)
# Variables d'env
echo 'export PATH=/usr/bin:$PATH' >> ~/.bashrc
echo 'export DOCKER_HOST=unix:///run/user/1000/docker.sock' >> ~/.bashrc
Limitations rootless
- Pas de bind sur ports < 1024 sans
setcapou config sysctl - Pas de cgroup v1 (besoin v2 — défaut moderne)
- Networking : slirp4netns, légèrement plus lent que bridge
- Volumes : permissions à gérer attentivement
Sécurité conteneur essentielle
# USER non-root dans Dockerfile
USER 1000:1000
# Drop capabilities
docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE myapp
# Read-only FS
docker run --read-only --tmpfs /tmp myapp
# Empêcher escalade
docker run --security-opt=no-new-privileges myapp
# Limits
docker run --memory=512m --cpus="0.5" myapp
Scan d’images
# Trivy : scan vulnérabilités
trivy image myapp:latest
# Scout (Docker)
docker scout cves myapp:latest
# Snyk
snyk container test myapp:latestIntégrer dans le CI/CD avant push en prod.
Hardening Docker host
- Daemon socket : ne JAMAIS exposer publiquement (port 2375 unsecured)
- Live-restore activé : containers survivent au restart daemon
- userns-remap : isolement supplémentaire des namespaces
- Audit logs :
auditdsur /var/lib/docker - CIS Docker Benchmark : suivre les recommandations