Aller au contenu

« Docker commandes » : différence entre les versions

De Marmits Wiki
Ligne 143 : Ligne 143 :
=== Commandes de base ===
=== Commandes de base ===


* Liste les conteneurs actifs. Aussi accessible par la commande docker ps [-a]. L'option -a liste aussi l'ensemble des conteneurs inactifs
* Liste les conteneurs. Par défaut, seuls les conteneurs en cours d'exécution sont affichés. L'option -a permet d'afficher tous les conteneurs, y compris ceux qui sont arrêtés.
<syntaxhighlight lang="bash" copy>
<syntaxhighlight lang="bash" copy>
docker container ls [-a]
docker container ls [-a]
</syntaxhighlight>
</syntaxhighlight>


* Démarre une nouvelle instance d'un conteneur à partir d'une image donnée
* Crée puis démarre un nouveau conteneur à partir d'une image donnée. Si l'image n'existe pas localement, Docker tente de la télécharger depuis le registre configuré, par défaut Docker Hub. Chaque exécution de cette commande crée un nouveau conteneur.
<syntaxhighlight lang="bash" copy>
<syntaxhighlight lang="bash" copy>
docker container run image_de_base
docker container run image_de_base
</syntaxhighlight>
</syntaxhighlight>


* Crée un conteneur basé sur une image donnée sans le démarrer
* Crée un nouveau conteneur à partir d'une image donnée, sans le démarrer. Le conteneur est simplement préparé avec sa configuration et pourra être démarré ensuite avec docker container start.
<syntaxhighlight lang="bash" copy>
<syntaxhighlight lang="bash" copy>
docker container create image_de_base
docker container create image_de_base
</syntaxhighlight>
</syntaxhighlight>


* Stoppe un conteneur actif
* Arrête proprement un conteneur en cours d'exécution. Docker envoie d'abord un signal d'arrêt au processus principal du conteneur, puis force l'arrêt si le conteneur ne s'arrête pas dans le délai prévu.
<syntaxhighlight lang="bash" copy>
<syntaxhighlight lang="bash" copy>
docker container stop nom_conteneur
docker container stop nom_conteneur
</syntaxhighlight>
</syntaxhighlight>


* Démarre un conteneur inactif
* Démarre un conteneur existant qui est actuellement arrêté. Contrairement à docker container run, cette commande ne crée pas de nouveau conteneur.
<syntaxhighlight lang="bash" copy>
<syntaxhighlight lang="bash" copy>
docker container start nom_conteneur
docker container start nom_conteneur
</syntaxhighlight>
</syntaxhighlight>


* Attache les entrées et sorties standards locales à un conteneur actif
* Attache le terminal courant aux flux standards d'un conteneur en cours d'exécution, c'est-à-dire à son entrée standard, sa sortie standard et sa sortie d'erreur. Cette commande permet d'interagir avec le processus principal du conteneur si celui-ci accepte une entrée interactive.
<syntaxhighlight lang="bash" copy>
<syntaxhighlight lang="bash" copy>
docker container attach nom_conteneur
docker container attach nom_conteneur
</syntaxhighlight>
</syntaxhighlight>


* Exécute une commande dans un conteneur actif
* Exécute une commande supplémentaire dans un conteneur déjà en cours d'exécution. Cette commande est souvent utilisée pour ouvrir un shell ou lancer une commande de diagnostic dans un conteneur actif.
<syntaxhighlight lang="bash" copy>
<syntaxhighlight lang="bash" copy>
docker container exec nom_conteneur commande
docker container exec nom_conteneur commande
</syntaxhighlight>
</syntaxhighlight>


* Supprime un conteneur inactif
* Supprime un ou plusieurs conteneurs arrêtés. Par défaut, Docker refuse de supprimer un conteneur encore en cours d'exécution, sauf si une suppression forcée est demandée avec une option adaptée.
<syntaxhighlight lang="bash" copy>
<syntaxhighlight lang="bash" copy>
docker container rm nom_conteneur
docker container rm nom_conteneur
</syntaxhighlight>
</syntaxhighlight>


* Supprime tous les conteneurs inactifs
* Supprime tous les conteneurs arrêtés. Cette commande ne touche pas aux conteneurs en cours d'exécution. Elle ne supprime pas non plus les images, les volumes ou les réseaux Docker. Elle est utile pour nettoyer les anciens conteneurs créés par des commandes docker container run ou docker compose, lorsqu'ils ne sont plus nécessaires. Docker demande une confirmation avant suppression, sauf si l'option -f est utilisée.
<syntaxhighlight lang="bash" copy>
<syntaxhighlight lang="bash" copy>
docker container prune
docker container prune
</syntaxhighlight>
</syntaxhighlight>


* Affiche les logs d'un conteneur actif
* Supprime tous les conteneurs arrêtés sans demander de confirmation.
<syntaxhighlight lang="bash" copy>
docker container prune -f
</syntaxhighlight>
 
* Affiche les logs d'un conteneur. Cette commande fonctionne aussi bien pour un conteneur en cours d'exécution que pour un conteneur arrêté, tant que ses logs existent encore. L'option -f permet de suivre les nouveaux logs en temps réel.
<syntaxhighlight lang="bash" copy>
<syntaxhighlight lang="bash" copy>
docker container logs [-f] nom_conteneur
docker container logs [-f] nom_conteneur
</syntaxhighlight>
</syntaxhighlight>


* Affiche les statistiques d'un conteneur actif
* Affiche en temps réel les statistiques d'utilisation des ressources d'un ou plusieurs conteneurs, notamment le CPU, la mémoire, le trafic réseau et les entrées/sorties disque.
<syntaxhighlight lang="bash" copy>
<syntaxhighlight lang="bash" copy>
docker container stats nom_conteneur
docker container stats nom_conteneur
</syntaxhighlight>
</syntaxhighlight>


* Affiche les informations détaillées d'un conteneur actif
* Affiche les informations détaillées d'un conteneur au format JSON, comme sa configuration, son état, ses variables d'environnement, ses montages, ses réseaux, ses ports et ses paramètres d'exécution. Cette commande fonctionne aussi bien sur un conteneur actif que sur un conteneur arrêté.
<syntaxhighlight lang="bash" copy>
<syntaxhighlight lang="bash" copy>
docker container inspect nom_conteneur
docker container inspect nom_conteneur

Version du 4 juin 2026 à 09:24

Restart Servive Docker

sudo systemctl restart docker

Inspect Container

docker inspect NOM_DU_CONTAINER | grep -E '(Image|Volumes|Network|"Path"|Status|tmp|HostPort|HostIp|IPAddress|Type|Source|Destination|com.docker.compose.project.working_dir)'

Liste images

docker images

Taille image

docker image inspect mon-image:latest --format='{{.Size}}' | numfmt --to=iec

statistiques globales

Montre l'espace utilisé par toutes les images, conteneurs et volumes.

docker system df

Processus

- Vérifier les processus détaillés

docker exec -it CONTAINER_NAME ps aux



Docker natif

Pour lancer un conteneur Docker sans démarrer Docker Desktop sur Ubuntu, vous devez utiliser le démon Docker directement via la ligne de commande. - Démarrez le service Docker natif

sudo systemctl start docker

- Vérifiez que le démon Docker fonctionne

sudo systemctl status docker

- Désactivez Docker Desktop au démarrage

systemctl --user disable docker-desktop

- Forcer Docker CLI à utiliser le socket natif
Modifiez la variable d’environnement DOCKER_HOST pour pointer vers le socket système :
(Pour que cela persiste après un redémarrage, ajoutez cette ligne dans ~/.bashrc ou ~/.zshrc.)

export DOCKER_HOST=unix:///var/run/docker.sock

- Désactiver Docker Desktop (si vous ne l’utilisez plus)

systemctl --user stop docker-desktop
systemctl --user disable docker-desktop

Volumes orphelins

Lister les volumes inutilisés

docker volume ls -qf dangling=true

Les supprimer

docker volume rm $(docker volume ls -qf dangling=true)

Mettre à jour un container 🔥

Besoin Commande recommandée
Rebuild simple docker compose up -d --build
Rebuild sans cache docker compose build --no-cache && docker compose up -d
Recréer containers proprement docker compose up -d --force-recreate
Tout supprimer puis repartir propre docker compose down && docker compose up -d --build
Mettre à jour le FROM docker compose build --pull

Pratiques

Images

Afficher ID + nom + tag

docker images --format "{{.Repository}}:{{.Tag}} {{.ID}}"
Trier uniquement les images uniques (comme -q) mais avec noms
docker images --format "{{.ID}} {{.Repository}}:{{.Tag}}" | sort -u

Scripts

Docker stop

Stop et supprime tous les conteneurs

#!/bin/bash

# Arrêter tous les conteneurs en cours d'exécution
docker stop $(docker ps -q)

# Supprimer tous les conteneurs
docker rm $(docker ps -a -q)

docker system prune -f
echo "Tous les conteneurs ont été supprimés."

Docker clean

Stop tous les containers, supprime les images, supprime les volumes

#!/bin/bash

# Arrêter tous les conteneurs en cours d'exécution
docker stop $(docker ps -q)

# Supprimer tous les conteneurs
docker rm $(docker ps -a -q)

# Supprimer toutes les images
docker rmi $(docker images -q)

# Supprimer tous les volumes
docker volume rm $(docker volume ls -q)

echo "Tous les conteneurs, images et volumes Docker ont été supprimés."

docker system prune -f

Divers

Commandes de base

  • Liste les conteneurs. Par défaut, seuls les conteneurs en cours d'exécution sont affichés. L'option -a permet d'afficher tous les conteneurs, y compris ceux qui sont arrêtés.
docker container ls [-a]
  • Crée puis démarre un nouveau conteneur à partir d'une image donnée. Si l'image n'existe pas localement, Docker tente de la télécharger depuis le registre configuré, par défaut Docker Hub. Chaque exécution de cette commande crée un nouveau conteneur.
docker container run image_de_base
  • Crée un nouveau conteneur à partir d'une image donnée, sans le démarrer. Le conteneur est simplement préparé avec sa configuration et pourra être démarré ensuite avec docker container start.
docker container create image_de_base
  • Arrête proprement un conteneur en cours d'exécution. Docker envoie d'abord un signal d'arrêt au processus principal du conteneur, puis force l'arrêt si le conteneur ne s'arrête pas dans le délai prévu.
docker container stop nom_conteneur
  • Démarre un conteneur existant qui est actuellement arrêté. Contrairement à docker container run, cette commande ne crée pas de nouveau conteneur.
docker container start nom_conteneur
  • Attache le terminal courant aux flux standards d'un conteneur en cours d'exécution, c'est-à-dire à son entrée standard, sa sortie standard et sa sortie d'erreur. Cette commande permet d'interagir avec le processus principal du conteneur si celui-ci accepte une entrée interactive.
docker container attach nom_conteneur
  • Exécute une commande supplémentaire dans un conteneur déjà en cours d'exécution. Cette commande est souvent utilisée pour ouvrir un shell ou lancer une commande de diagnostic dans un conteneur actif.
docker container exec nom_conteneur commande
  • Supprime un ou plusieurs conteneurs arrêtés. Par défaut, Docker refuse de supprimer un conteneur encore en cours d'exécution, sauf si une suppression forcée est demandée avec une option adaptée.
docker container rm nom_conteneur
  • Supprime tous les conteneurs arrêtés. Cette commande ne touche pas aux conteneurs en cours d'exécution. Elle ne supprime pas non plus les images, les volumes ou les réseaux Docker. Elle est utile pour nettoyer les anciens conteneurs créés par des commandes docker container run ou docker compose, lorsqu'ils ne sont plus nécessaires. Docker demande une confirmation avant suppression, sauf si l'option -f est utilisée.
docker container prune
  • Supprime tous les conteneurs arrêtés sans demander de confirmation.
docker container prune -f
  • Affiche les logs d'un conteneur. Cette commande fonctionne aussi bien pour un conteneur en cours d'exécution que pour un conteneur arrêté, tant que ses logs existent encore. L'option -f permet de suivre les nouveaux logs en temps réel.
docker container logs [-f] nom_conteneur
  • Affiche en temps réel les statistiques d'utilisation des ressources d'un ou plusieurs conteneurs, notamment le CPU, la mémoire, le trafic réseau et les entrées/sorties disque.
docker container stats nom_conteneur
  • Affiche les informations détaillées d'un conteneur au format JSON, comme sa configuration, son état, ses variables d'environnement, ses montages, ses réseaux, ses ports et ses paramètres d'exécution. Cette commande fonctionne aussi bien sur un conteneur actif que sur un conteneur arrêté.
docker container inspect nom_conteneur

Commandes avec paramètres

#la commande pour my-mariadb va créer un répertoire par défaut (on ne peut pas le spécifier nous même)
docker run --name my-mariadb --detach --env MYSQL_ROOT_PASSWORD=root --network db-network -v /var/lib/mysql mariadb
docker run --network db-network --detach --publish 7080:8080 adminer

#permet de créer l'image de contacts_nginx_prod
docker build --target contacts_nginx_prod -t $USER/demo-contacts-web:1.0.0 .

source :