Docker : les conteneurs
Un conteneur est une instance en cours d’exécution (ou arrêtée) d’une image. Les exemples utilisent des noms génériques (web, monapp).
Créer et lancer
Section intitulée « Créer et lancer »# En arrière-plan, nommé, avec un port publiédocker run -d --name web -p 8080:80 nginx:alpine
# Session interactive jetable (supprimée à la sortie)docker run --rm -it alpine sh
# Variables d'environnement, volume et redémarrage automatiquedocker run -d --name db \ -e POSTGRES_PASSWORD=secret \ -v pgdata:/var/lib/postgresql/data \ --restart unless-stopped \ postgres:16Options courantes de docker run
Section intitulée « Options courantes de docker run »| Option | Rôle |
|---|---|
-d |
Exécute en arrière-plan |
--name |
Nomme le conteneur |
-p hôte:conteneur |
Publie un port (-p 127.0.0.1:8080:80 pour limiter à la machine locale) |
-e VAR=valeur |
Définit une variable d’environnement |
--env-file .env |
Charge des variables depuis un fichier |
-v volume:/chemin |
Monte un volume ou un dossier de l’hôte |
--rm |
Supprime le conteneur à son arrêt |
-it |
Terminal interactif |
--restart |
Politique de redémarrage (voir plus bas) |
--network |
Rattache à un réseau |
--user 1000:1000 |
Exécute avec un utilisateur non root |
--read-only |
Système de fichiers en lecture seule |
docker create crée le conteneur sans le démarrer (mêmes options).
Cycle de vie
Section intitulée « Cycle de vie »| Commande | Rôle |
|---|---|
docker ps |
Conteneurs en cours d’exécution |
docker ps -a |
Tous les conteneurs, y compris arrêtés |
docker stop web |
Arrête proprement (signal SIGTERM, puis SIGKILL après 10 s) |
docker kill web |
Arrête immédiatement (SIGKILL) |
docker start web |
Démarre un conteneur arrêté |
docker restart web |
Redémarre |
docker pause web / docker unpause web |
Suspend / reprend les processus |
docker rename web site |
Renomme |
docker rm web |
Supprime un conteneur arrêté (-f pour forcer) |
docker wait web |
Attend l’arrêt et affiche le code de sortie |
Observer et déboguer
Section intitulée « Observer et déboguer »docker logs web # logs completsdocker logs -f --tail 100 web # suivre les 100 dernières lignesdocker logs --since 10m web # logs des 10 dernières minutesdocker exec -it web sh # shell dans un conteneur en marchedocker exec web ls /etc # commande ponctuelledocker attach web # se rattache au processus principal (Ctrl+p Ctrl+q pour quitter sans l'arrêter)docker top web # processus du conteneurdocker stats web # CPU et mémoire en directdocker inspect web # configuration détaillée (JSON)docker diff web # fichiers modifiés par rapport à l'imageCopier des fichiers
Section intitulée « Copier des fichiers »docker cp web:/etc/nginx/nginx.conf ./nginx.conf # conteneur vers hôtedocker cp ./index.html web:/usr/share/nginx/html/ # hôte vers conteneurPolitique de redémarrage
Section intitulée « Politique de redémarrage »| Valeur | Comportement |
|---|---|
no |
Jamais (défaut) |
on-failure[:max] |
Redémarre en cas de code de sortie non nul |
always |
Toujours, y compris au démarrage du service Docker |
unless-stopped |
Comme always, sauf si le conteneur a été arrêté manuellement |
Modifier un conteneur existant : docker update --restart unless-stopped web.
Limiter les ressources
Section intitulée « Limiter les ressources »docker run -d --name api --memory 512m --cpus 1.5 monapp:1.0docker update --memory 1g --memory-swap 1g apiSurveillance de santé
Section intitulée « Surveillance de santé »docker run -d --name web \ --health-cmd "wget -qO- http://localhost/ || exit 1" \ --health-interval 30s --health-retries 3 \ nginx:alpinedocker ps # la colonne STATUS affiche (healthy) ou (unhealthy)Nettoyer
Section intitulée « Nettoyer »docker container prune # supprime tous les conteneurs arrêtésPour aller plus loin
Section intitulée « Pour aller plus loin »- Référence de
docker run: docs.docker.com/reference/cli/docker/container/run