Uno de los primeros comandos de Docker que usa es docker ps
dominio. Muestra los contenedores en ejecución:
docker ps
En realidad, ejecutar este comando le brinda una lista de contenedores en ejecución y su ID de contenedor único, el nombre de la imagen, el comando que está ejecutando, el tiempo desde que se está ejecutando (tiempo de actividad) y los puertos que está utilizando.
Pero puedes hacer un poco más con él. Puede mostrar los contenedores detenidos, filtrar el resultado o simplemente mostrar los ID de los contenedores.
Echemos un vistazo un poco más detallado a este comando esencial de Docker.
El comando docker ps
Docker tiene un alias para mostrar todos los contenedores en ejecución con una convención de nomenclatura compatible con POSIX.
Ese es el ps
subcomando en Docker. Es un alias de docker container ls
. Que, como puede adivinar, se usa para listar contenedores acoplables.
Aquí hay un ejemplo de ejecución de docker ps
en mi computadora:
$ 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
Como puede ver, este comando muestra detalles sobre todos los contenedores en ejecución.
Los detalles que se muestran son la identificación única del contenedor, el nombre de la imagen, el comando que ejecuta el contenedor, la fecha en que se creó el contenedor, el tiempo de actividad, los puertos asignados y el nombre del contenedor.
Como administrador de sistemas, a menudo usará este comando en un script. Docker proporciona algunas opciones que pueden ser útiles cuando ejecuta docker ps
en un guión.
Mostrar todos los contenedores (no solo los que se están ejecutando)
Como UNIX ps
El comando se usa para mostrar procesos (programas que se están ejecutando), Docker se comporta de manera similar.
Ejecutando docker ps
solo mostrará los contenedores docker que están activos.
Si detiene un contenedor en ejecución, aún existe, solo que ya no se está ejecutando.
Para ver los contenedores que están detenidos, use el --all
(o -a
) opción así:
docker ps --all
Detuve el contenedor transmission_web
. Veamos qué obtengo en la salida.
$ 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
Como puede ver, el -a
La opción también muestra un contenedor que se detuvo.
Filtrar la salida de docker ps para un resultado más preciso
El docker ps
El comando tiene una opción muy útil, --filter
(o -f
para abreviar).
Como se desprende del nombre de la opción, puede filtrar los contenedores usando los siguientes campos:
id
name
label
exited
status
ancestor
since
volume
publish
health
isolation
Creé un contenedor que se llama nextcloud_server
. Quiero ver detalles sobre contenedores, pero solo aquellos con el nombre que busco. Veamos cómo usar el name
filtro.
$ 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
Tengo varios contenedores corriendo, pero pasando usando el name
el filtro solo me muestra los contenedores que coinciden con el nombre.
Intentemos usar el id
filtrar. Tengo un contenedor MariaDB con el ID "140161b8b139". Usaré el siguiente comando para lograrlo.
$ 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
¡Fácil! Recibí el contenedor con la identificación coincidente.
Mostrar contenedores en el orden en que fueron creados
Sí, puede enumerar los contenedores clasificados en el orden de su fecha de creación usando el --latest
(o l
para abreviar).
El orden es el más reciente en la parte superior y el más antiguo en la parte inferior.
Aquí hay un resultado de muestra de ejecutar el comando docker ps --latest
en mi computadora:
$ 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
Hay algunas trampas con este comando.
- Cualquier contenedor que se utilice como "dependencia" no aparecerá en la lista
- La salida incluye todos los estados de los contenedores (eso significa que se enumerarán incluso los contenedores que están detenidos)
Creé el contenedor "nextcloud_server" con MariaDB como su "dependencia". Entonces ese contenedor no aparece en la salida cuando se usa --latest
bandera.
¿Scripting mucho? Mostrar solo ID de contenedor
Suponga que está escribiendo un script y solo quiere tratar con ID de contenedores para poder realizar acciones en los contenedores. Para eso, puedes usar --quiet
(o -q
para abreviar) opción.
A continuación se muestra el resultado de ejecutar docker ps -q
en mi computadora.
$ docker ps -q
58c7013a49c3
140161b8b139
Como puede ver, la salida consta solo de ID de contenedor (de contenedores que se están ejecutando) y nada más.
Como puede ver, hay más en el comando Docker ps que solo mostrar la información del contenedor en ejecución. Avíseme si aprendió algo nuevo o si conoce algún otro ejemplo útil de docker ps
comando.