Docker

Pense-bête

Surcharger un paramètre “ENTRYPOINT”

Si vous utilisez une image Docker dont le paramètre ENTRYPOINT a été définie — par exemple ENTRYPOINT ["/usr/sbin/mysqld"] —, il y a une astuce pour lancer un container basé sur cette image avec une autre commande que celle prévue pour être exécutée en entrypoint : il faut redéclarer l’option --entrypoint avec la commande souhaitée et passer les options à ladite commande en arguments.

Par exemple, si l’on souhaite “inspecter” un container basé sur image Docker mysql-server:5.5 prévue pour exécuter la commande /usr/sbin/mysqld à l’aide d’un shell Bash interactif (/bin/bash -s) :

docker run --entrypoint=/bin/bash mysql-server:5.5 -s

Astuces

Effectuer une opération sur toute une série d’objets

Pour effectuer la même opération sur toute une série d’objets de même nature — images, containers… — il est possible d’utiliser conjointement l’option -q présente dans la plupart des contextes de listage, ce qui permet de n’afficher que les références (ID) plutôt que l’intégralité des éléments. Il est ainsi possible de piper cette liste de références à une autre sous-commande docker via la commande xargs. Voici quelques exemples :

Supprimer toutes les images :

docker images -qa | xargs docker rmi

(Re)démarrer/arrêter tous les containers :

docker ps -qa | xargs docker restart
docker ps -qa | xargs docker start
docker ps -qa | xargs docker stop

Supprimer toutes les images non taggées

docker images | awk '$1 ~ /none/ { print $3 }' | xargs docker rmi