Commandes Docker : les commandes du quotidien

Commencons directement par les plus cool (et les plus simples sont en bas).

Les Advanced

  • Faire du ménage dans les containers: docker rm -v $(docker ps -a | grep /usr/local/ | awk '{print $1}')
    Encore plus simple si vous utilisez fish, vous tapez: docker rm -v (docker ps -a | grep rancher/ | awk '{print $1}') et vous gagnez 1$.

Ndlr: Depuis Docker a évolué (si, si) et il y a l'option -q qui liste uniquement les id des containers. La commande peut donc être simplifiée en:

$ docker rm -v $(docker container ls -aq)
$ docker rmi $(docker image ls -q)

Il y aussi depuis la version API 1.25, la commande prune. A noter au passage, qu'ils uniformisent les commandes en ajoutant le type de commande après docker:

# Equivalents:
$ docker ps
$ docker container ls

# Le ménage de printemps:
$ docker container prune
# que vous pouvez filtrer, par exemple pour supprimer ceux créés il y a 1/2h
$ docker container prune --force --filter "until=30m"

Les basiques

1/ Images

  • Liste des images:
    docker images
  • Chercher une image sur le hub: docker search mon/image
  • Supprimer une image: docker rmi mon/image

2/ Les containers:

  • Liste des containers actifs: docker ps
  • Liste de tous les containers: docker ps -a
  • Démarrage et stop par docker start moncontainer ou avec stop
  • Supprimer docker rm -v moncontainer

Postgresql :

Un exemple de script pour démarrer une instance de base de donnée Postgresql:

#!/bin/sh                                                                                                                                                                                                                                       docker run -d --name pgdb \                                            	--restart unless-stopped \                                                      --network NB_NET \                                                              --user 998:997 \                                                                -v /etc/passwd:/etc/passwd:ro \                                                  -v $PWD/data:/var/lib/postgresql/data \                                          -e POSTGRES_PASSWORD=pwd \                                                   	  -e POSTGRES_USER=user \
   -e POSTGRES_DB=database \
   -p 15432:5432 \                                                                  postgres:12.2 

Et aussi un script pour faire un backup d'une table (ou de la base en entier) :

docker run --rm --network NB_NET -v /home/user/.pgpass:/.pgpass -v $PWD/bckp:/tmp postgres:12.2 sh -c 'pg_dump -h pgdb -p 5432 -d database -U user -t public.matable > /tmp/matable.sql'