Docker

Empaquetez et exécutez des applications dans des conteneurs isolés - environnements cohérents du développement à la production

TL;DR

En une ligne: Docker empaquette les apps dans des conteneurs qui fonctionnent de manière identique partout - fini les problèmes “ça marche sur ma machine”.

Valeur principale:

  • Environnements cohérents - même configuration du dev à la production
  • Isolation - les apps n’interfèrent pas entre elles
  • Portabilité - fonctionne sur n’importe quelle machine avec Docker
  • Léger - partage le kernel de l’OS hôte, pas une VM complète

Quick Start

Install

macOS/Windows: Télécharger Docker Desktop

Linux:

curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
# Déconnexion puis reconnexion

Verify

docker --version

First Container

docker run hello-world

Run a Web Server

docker run -d -p 8080:80 nginx
# Ouvrez http://localhost:8080

Cheatsheet

CommandeDescription
docker run IMAGEExécuter un conteneur
docker run -d IMAGEExécuter en arrière-plan
docker run -p 8080:80 IMAGEMapper un port
docker run -v /host:/container IMAGEMonter un volume
docker psLister les conteneurs en cours
docker ps -aLister tous les conteneurs
docker imagesLister les images
docker pull IMAGETélécharger une image
docker stop IDArrêter un conteneur
docker rm IDSupprimer un conteneur
docker rmi IMAGESupprimer une image
docker logs IDVoir les logs du conteneur
docker exec -it ID bashShell dans le conteneur

Gotchas

Permission denied on Linux

sudo usermod -aG docker $USER
# Puis déconnexion et reconnexion

Port already in use

# Utiliser un autre port hôte
docker run -p 3001:80 nginx

Container stops immediately

# Exécuter de manière interactive pour déboguer
docker run -it IMAGE bash

# Vérifier les logs
docker logs CONTAINER_ID

Dockerfile not updating

# Construire sans cache
docker build --no-cache -t myapp .

Volume permissions

# Exécuter en tant qu'utilisateur courant
docker run -u $(id -u):$(id -g) -v $(pwd):/app IMAGE

Next Steps