L'une des premières commandes Docker que vous utilisez est le docker ps
commande. Il montre les conteneurs en cours d'exécution :
docker ps
En fait, l'exécution de cette commande vous donne une liste des conteneurs en cours d'exécution et leur ID de conteneur unique, le nom de l'image, la commande qu'il exécute, le temps écoulé depuis son exécution (uptime) et les ports qu'il utilise.
Mais vous pouvez faire un peu plus avec. Vous pouvez afficher les conteneurs arrêtés, filtrer le résultat ou simplement afficher les ID des conteneurs.
Examinons un peu plus en détail cette commande essentielle de Docker.
La commande docker ps
Docker a un alias pour afficher tous les conteneurs en cours d'exécution avec une convention de dénomination conviviale POSIX.
C'est le ps
sous-commande dans Docker. C'est un alias de docker container ls
. Qui, comme vous pouvez le deviner, est utilisé pour répertorier les conteneurs Docker.
Voici un exemple d'exécution de docker ps
sur mon ordinateur :
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58c7013a49c3 nextcloud "/entrypoint.sh apac…" 32 seconds ago Up 31 seconds 0.0.0.0:8010->80/tcp, :::8010->80/tcp nextcloud_server
140161b8b139 mariadb "docker-entrypoint.s…" 34 seconds ago Up 32 seconds 3306/tcp nextcloud_db
73a6901a4846 lscr.io/linuxserver/transmission "/init" 17 minutes ago Exited (137) 9 minutes ago transmission_web
Comme vous pouvez le voir, cette commande affiche des détails sur tous les conteneurs en cours d'exécution.
Les détails affichés sont l'ID unique du conteneur, le nom de l'image, la commande que le conteneur exécute, la date de création du conteneur, la disponibilité, les ports mappés et le nom du conteneur.
En tant qu'administrateur système, vous utiliserez souvent cette commande dans un script. Docker fournit quelques options qui peuvent être utiles lorsque vous exécutez docker ps
dans un script.
Afficher tous les conteneurs (pas seulement ceux en cours d'exécution)
Comme UNIX ps
est utilisée pour afficher les processus (programmes en cours d'exécution), Docker se comporte de la même manière.
Exécution de docker ps
n'affichera que les conteneurs Docker actifs.
Si vous arrêtez un conteneur en cours d'exécution, il existe toujours, seulement qu'il n'est plus en cours d'exécution.
Pour voir les conteneurs qui sont à l'état arrêté, utilisez le --all
(ou -a
) comme ceci :
docker ps --all
J'ai arrêté le conteneur transmission_web
. Voyons ce que j'obtiens dans la sortie.
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58c7013a49c3 nextcloud "/entrypoint.sh apac…" 32 seconds ago Up 31 seconds 0.0.0.0:8010->80/tcp, :::8010->80/tcp nextcloud_server
140161b8b139 mariadb "docker-entrypoint.s…" 34 seconds ago Up 32 seconds 3306/tcp nextcloud_db
73a6901a4846 lscr.io/linuxserver/transmission "/init" 17 minutes ago Exited (137) 9 minutes ago transmission_web
Comme vous pouvez le voir, le -a
L'option affiche également un conteneur qui a été arrêté.
Filtrer la sortie de docker ps pour un résultat plus précis
Le docker ps
La commande a une option très utile, --filter
(ou -f
pour faire court).
Comme le montre le nom de l'option, vous pouvez filtrer les conteneurs à l'aide des champs suivants :
id
name
label
exited
status
ancestor
since
volume
publish
health
isolation
J'ai créé un conteneur nommé nextcloud_server
. Je souhaite voir des détails sur les conteneurs, mais uniquement ceux portant le nom que je recherche. Voyons comment utiliser le name
filtre.
$ docker ps --filter "name=nextcloud_server"
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58c7013a49c3 nextcloud "/entrypoint.sh apac…" 3 hours ago Up 3 hours 0.0.0.0:8010->80/tcp, :::8010->80/tcp nextcloud_server
J'ai plusieurs conteneurs en cours d'exécution, mais en utilisant le name
le filtre ne me montre que les conteneurs qui correspondent au nom.
Essayons d'utiliser le id
filtre. J'ai un conteneur MariaDB avec l'ID "140161b8b139". Je vais utiliser la commande suivante pour y parvenir.
$ docker ps --filter "id=140161b8b139"
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
140161b8b139 mariadb "docker-entrypoint.s…" 15 hours ago Up 15 hours 3306/tcp nextcloud_db
Facile! J'ai reçu le conteneur avec l'ID correspondant.
Afficher les conteneurs dans l'ordre dans lequel ils ont été créés
Oui, vous pouvez répertorier les conteneurs triés dans l'ordre de leur date de création en utilisant le --latest
(ou l
pour faire court).
La commande est la plus récente en haut et la plus ancienne en bas.
Voici un exemple de sortie de l'exécution de la commande docker ps --latest
sur mon ordinateur :
$ docker ps --latest
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58c7013a49c3 nextcloud "/entrypoint.sh apac…" 15 hours ago Up 15 hours 0.0.0.0:8010->80/tcp, :::8010->80/tcp nextcloud_server
73a6901a4846 lscr.io/linuxserver/transmission "/init" 16 hours ago Exited (137) 16 hours ago transmission_web
Il y a quelques pièges avec cette commande.
- Tous les conteneurs utilisés comme "dépendance" ne seront pas répertoriés
- La sortie inclut tous les états des conteneurs (ce qui signifie que même les conteneurs arrêtés seront répertoriés)
J'avais créé le conteneur "nextcloud_server" avec MariaDB comme "dépendance". Ainsi, ce conteneur n'est pas répertorié dans la sortie lors de l'utilisation de --latest
drapeau.
Beaucoup de script ? Afficher uniquement les ID de conteneur
Supposons que vous écriviez un script et que vous souhaitiez uniquement traiter les ID de conteneur afin de pouvoir effectuer des actions sur les conteneurs. Pour cela, vous pouvez utiliser le --quiet
(ou -q
pour faire court).
Ci-dessous est la sortie de l'exécution de docker ps -q
sur mon ordinateur.
$ docker ps -q
58c7013a49c3
140161b8b139
Comme vous pouvez le voir, la sortie se compose uniquement d'ID de conteneur (de conteneurs en cours d'exécution) et rien d'autre.
Comme vous pouvez le constater, la commande Docker ps ne se limite pas à afficher les informations sur le conteneur en cours d'exécution. Faites-moi savoir si vous avez appris quelque chose de nouveau ou si vous connaissez un autre exemple utile du docker ps
commande.