Docker/Gestion des conteneurs
Registres.
Les images des conteneurs peuvent être stockées dans un registre, privé ou public comme https://hub.docker.com/.
Pour en récupérer une :
 docker login
 docker image pull $IMAGE_NAME || echo " » missing image"
Exemple : 
 docker image pull maarch/maarchrm:latest
Les images téléchargées sont stockées :
Pour mettre à jour une image sur un registre à partir d'un ../Dockerfile/ :
 docker image build
 docker image push $IMAGE_NAME
run.
"run" s'utiliser pour lancer un conteneur à partir de son image (automatiquement téléchargée si absente en local). Une fois la commande exécutée, le conteneur s'arrête. Exemple qui liste le dossier courant :
docker run maven:latest ls
bin
boot
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
Pour rester connecté dedans, on utilise le mode interactif (-it) :
docker run -it redis
redis-cli
Pour partager un dossier avec la machine hôte, on peut utiliser "-v" pour "volume", ou "--mount" si le conteneur a des services. Exemple qui liste le dossier de la machine hôte partagé avec le conteneur :
docker run -it -v "/$(pwd)/":/usr/src/mymaven maven ls usr/src/mymaven
exec.
Pour exécuter une commande dans un conteneur. Ex :
docker exec redis sh -c 'pwd' 
Autre exemple :
docker exec php8.0-fpm sh -c 'cd /var/www/mon_app; composer install'
Fonctionne aussi avec un fichier :
docker exec redis script.sh
Dans tous les conteneurs.
Pour lancer une commande dans tous les conteneurs, il faut créer le fichier suivant :
for container in `docker ps -q`; do 
 docker inspect --format=" $container;
 docker exec -it $container $1;
done
Ensuite le lancer avec la commande en paramètre :
./dockers.sh date
/php7.3-fpm
Thu Mar 19 11:15:34 Europs 2020
/php7.4-fpm
Thu Mar 19 12:15:34 Europs 2020
Rentrer dans un conteneur.
Pour utiliser le conteneur, on peut rentrer dedans en utilisant le mode interactif :
docker exec -it redis bash
Cela permet d'enchainer les commandes (comme si on était sur un serveur hôte en SSH).
build.
Pour lancer un conteneur à construire, il faut le faire depuis le dossier de son Dockerfile :
docker build .
ps et rm.
Pour obtenir la liste des conteneurs lancés :
docker ps
Idem mais avec seulement trois colonnes, triées par nom (colonne n°2) :
docker ps --format "table \t\t" | (read -r; printf "%s\n" "$REPLY"; sort -k 2 )
Pour tous les conteneurs (lancés ou pas) :
docker ps -a
Pour en supprimer un :
docker rm nom_du_coteneur
image et rmi.
Pour toutes les images :
docker image ls
Pour en supprimer une :
docker rmi nom_image
save et load.
Permet de sauvegarde une image. Pour toutes les sauvegarder :
 docker save $(docker images -q) -o images_docker.tar
On peut ensuite les recharger (par exemple sur une autre machine) avec :
 docker load --input images_docker.tar
stats.
Pour connaitre la consommation en ressources de chaque conteneur :
docker stats --no-stream
Ex :
prune.
Pour supprimer les conteneurs arrêtés :
 docker container prune
Les images :
 docker image prune
Les réseaux :
 docker network prune
Les conteneurs, images et réseaux inutilisés :
 docker system prune
Enfin pour les volumes (généralement volumineux) :
 docker volume prune
Il existe des filtres :
Par exemple pour purger les images et leurs volumes toutes les nuits à 3 h, on peut créer cette tâche planifiée :
 0 3 * * * docker system prune --all --volumes -f
tag.
Renommer une image.