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 :