15 comandos de Docker para administrar contenedores [List, Stop, Start, Remove and More]

Docker es una herramienta popular para crear y ejecutar aplicaciones en contenedores. Está disponible para varias plataformas y se utiliza como una de las tecnologías de contenedores de back-end en Kubernetes.

En Docker, crea sus propias imágenes para ejecutar su aplicación como un contenedor, o puede extraer y usar miles de imágenes públicas del repositorio de Docker y usarlas en su proyecto. Una vez que su imagen esté lista, puede lanzar sus contenedores usando esas imágenes. Un contenedor es una instancia en ejecución de una imagen de Docker.

La gestión de contenedores de Docker es uno de los aspectos más importantes a tener en cuenta como administrador del sistema que gestiona hosts/contenedores de Docker.

En este artículo, nos centraremos en la gestión de contenedores mediante el comando docker.

ejecutar comando

El comando docker run se usa para ejecutar un contenedor desde una imagen especificando el ID de la imagen o el nombre del Repositorio y/o Etiqueta.

$ docker run {image}

Ejemplo:

$ docker run nginx

El comando anterior ejecuta una instancia de la aplicación nginx en un host docker, si ya existe. Si no existe en el host de Docker, se dirige al concentrador de Docker (de forma predeterminada) y baja la imagen. Pero esto se hace la única primera vez. Para tiempos posteriores se reutiliza la misma imagen.

Si desea ejecutar una versión particular de una imagen, especifique su versión separada por dos puntos. Esto se conoce como etiqueta. En caso de que no especifique ninguna etiqueta, Docker la considerará por defecto como la última.

Además, si desea ejecutar el contenedor en segundo plano en un modo separado para volver al indicador después de que Docker inicie el contenedor, use el indicador -d.

Ejemplo:

$ docker run nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
33847f680f63: Pull complete
dbb907d5159d: Pull complete
8a268f30c42a: Pull complete
b10cf527a02d: Pull complete
c90b090c213b: Pull complete
1f41b2f2bf94: Pull complete
Digest: sha256:8f335768880da6baf72b70c701002b45f4932acae8d574dedfddaf967fc3ac90
Status: Downloaded newer image for nginx:latest
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2021/08/15 12:13:23 [notice] 1#1: using the "epoll" event method
2021/08/15 12:13:23 [notice] 1#1: nginx/1.21.1
2021/08/15 12:13:23 [notice] 1#1: built by gcc 8.3.0 (Debian 8.3.0-6)
2021/08/15 12:13:23 [notice] 1#1: OS: Linux 5.8.0-1039-azure
2021/08/15 12:13:23 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2021/08/15 12:13:23 [notice] 1#1: start worker processes
2021/08/15 12:13:23 [notice] 1#1: start worker process 33
2021/08/15 12:13:23 [notice] 1#1: start worker process 34

pd comando

El comando docker ps enumera todos los contenedores en ejecución y alguna información básica sobre ellos. Como el ID del contenedor, el nombre de la imagen, la hora en que se creó el contenedor, el estado actual y el nombre del contenedor. Cada contenedor obtiene un nombre aleatorio (si no se especifica explícitamente) y una identificación.

Ejemplo:

$ docker ps 
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES 
133f5e0267a5   nginx     "/docker-entrypoint.…"   10 seconds ago   Up 10 seconds   80/tcp    jolly_elion 

Para enumerar todos los contenedores en ejecución y no en ejecución/salidos a la vez, puede usar:

$ docker ps -a

Ejemplo:

$ docker ps -a 
CONTAINER ID   IMAGE         COMMAND                  CREATED        STATUS                    PORTS     NAMES 
fcec129f0eb4   nginx         "/docker-entrypoint.…"   46 hours ago   Exited (0) 46 hours ago             interesting_ishizaka 
6e8b1e441aa6   hello-world   "/hello"                 2 days ago     Exited (0) 2 days ago               keen_shirley 

Comando ls

Al igual que el comando ps, ls también se puede usar para enumerar contenedores. -Se puede usar una bandera para enumerar todos los contenedores (no solo los que están en ejecución).

$ docker container ls

Ejemplo:

$ docker container ls
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS      NAMES
15796e91c30b   redis     "docker-entrypoint.s…"   2 seconds ago    Up 1 second     6379/tcp   flamboyant_neumann
904390b65d45   nginx     "/docker-entrypoint.…"   14 minutes ago   Up 14 minutes   80/tcp     nginx_new
$

Comando de parada

El comando docker stop se usa para detener un contenedor en ejecución. Aquí necesitamos poner el nombre o ID del contenedor junto con esto.

$ docker stop {container-id}

En caso de éxito, devolvería el nombre o ID de la ventana acoplable.

Ejemplo:

$ docker ps 
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES 
133f5e0267a5   nginx     "/docker-entrypoint.…"   50 seconds ago   Up 49 seconds   80/tcp    jolly_elion 

Esto devolverá la ID DEL CONTENEDOR que puede usar para detener el contenedor.

$ docker stop 133f5 
133f5

Para este ejemplo y los siguientes, tenga en cuenta que no necesita especificar un valor completo de CONTAINER ID. Aceptará hasta la parte, lo que lo hace único entre otros contenedores en ejecución, ya que Docker sabe qué contenedor detener.

Comando rm

El comando docker rm elimina un contenedor detenido o cerrado.

$ docker rm {CONTAINER NAME or ID}

Ejemplo:

$ docker rm 133f5
133f5
$

Comando ejecutivo

Podemos usar el comando exec para ingresar a un contenedor en ejecución. Esto es útil para depurar contenedores en ejecución o hacer algunas cosas dentro de un contenedor.

$ docker exec –it {container} {command}

Ejemplo:

Suponga que desea iniciar bash shell (asumiendo que la imagen tiene Bash disponible, también puede usar otros shells disponibles) dentro de un contenedor llamado unruffled_meninsky en modo interactivo, use:

$ docker exec –it unruffled_meninsky /bin/bash

Esto debería llevarlo dentro del contenedor en un bash shell. Aquí la bandera -i representa el modo interactivo y -t para el terminal. Si solo desea ejecutar uno o más comandos y salir del contenedor, puede usar:

$ docker exec unruffled_meninsky cat /etc/hosts
127.0.0.1	localhost 
::1	localhost ip6-localhost ip6-loopback 
fe00::0	ip6-localnet 
ff00::0	ip6-mcastprefix 
ff02::1	ip6-allnodes 
ff02::2	ip6-allrouters 
172.17.0.2	cd2eed4acf34 

Comando de registros

En caso de que un contenedor se inicie en modo separado y queramos ver sus registros, podemos usar el comando logs para revisar sus registros:

$ docker logs {CONTAINER NAME or ID}

Ejemplo:

$ docker logs 7da6dcebaf9c
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2021/08/15 12:14:09 [notice] 1#1: using the "epoll" event method
2021/08/15 12:14:09 [notice] 1#1: nginx/1.21.1
2021/08/15 12:14:09 [notice] 1#1: built by gcc 8.3.0 (Debian 8.3.0-6)
2021/08/15 12:14:09 [notice] 1#1: OS: Linux 5.8.0-1039-azure
2021/08/15 12:14:09 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2021/08/15 12:14:09 [notice] 1#1: start worker processes
2021/08/15 12:14:09 [notice] 1#1: start worker process 31
2021/08/15 12:14:09 [notice] 1#1: start worker process 32
$

Comando cp

Para copiar archivos entre un contenedor y un sistema de archivos localhost, puede usar el comando cp.

$ docker container cp {CONTAINER NAME or ID:SRC_PATH} {DEST_PATH}|-

Ejemplo:

$ docker container cp quirky_cray:/etc/nginx/nginx.conf nginx.conf.bkp

Comando de exportación

El comando contenedor de Docker ofrece una opción para exportar el sistema de archivos de un contenedor como un archivo TAR.

$ docker container export {CONTAINER NAME or ID}

inspeccionar comando

Podemos verificar información detallada sobre un contenedor usando el comando de inspección como:

$ docker inspect {CONTAINER NAME or ID}

O

$ contenedor docker inspeccionar {NOMBRE o ID DEL CONTENEDOR}

matar comando

Un contenedor en ejecución se puede matar usando el comando kill con un indicador opcional –signal o -s. Se pueden especificar varios contenedores para matarlos de una sola vez.

$ docker kill {CONTAINER NAME or ID} [--signal VAL]

Ejemplo:

$ docker kill cd9005a0b5d2 -s 9
cd9005a0b5d2
$

Comando de estadísticas

Para mostrar una transmisión en vivo del uso de recursos de un contenedor, puede usar el comando stats:

$ docker container stats {CONTAINER NAME or ID}

Ejemplo:

$ docker container stats thirsty_volhard
CONTAINER ID   NAME              CPU %     MEM USAGE / LIMIT     MEM %     NET I/O       BLOCK I/O     PIDS
904390b65d45   thirsty_volhard   0.00%     3.406MiB / 7.775GiB   0.04%     1.02kB / 0B   0B / 8.19kB   3

Comando superior

Al igual que el comando superior en Linux, podemos usarlo con Docker para obtener una lista de los procesos en ejecución.

$ docker container top {CONTAINER NAME or ID}

Ejemplo:

$ docker container top thirsty_volhard
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                2603                2582                0                   12:34               ?                   00:00:00            nginx: master process nginx -g daemon off;
systemd+            2659                2603                0                   12:34               ?                   00:00:00            nginx: worker process
systemd+            2660                2603                0                   12:34               ?                   00:00:00            nginx: worker process
$

renombrar Comando

Para cambiar el nombre de un contenedor existente, use el comando de cambio de nombre.

$ docker container rename {OLD CONTAINER NAME} {NEW CONTAINER NAME}

Ejemplo:

$ docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
904390b65d45   nginx     "/docker-entrypoint.…"   7 minutes ago   Up 7 minutes   80/tcp    nginx_container
$ docker container rename nginx_container nginx_new
$ docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
904390b65d45   nginx     "/docker-entrypoint.…"   7 minutes ago   Up 7 minutes   80/tcp    nginx_new
$

Comando diferencial

Podemos inspeccionar los cambios en archivos o directorios en el sistema de archivos de un contenedor con el comando diff.

$ docker container diff {CONTAINER NAME or ID}

Ejemplo:

$ docker container diff nginx_new
C /var
C /var/cache
C /var/cache/nginx
A /var/cache/nginx/uwsgi_temp
A /var/cache/nginx/client_temp
A /var/cache/nginx/fastcgi_temp
A /var/cache/nginx/proxy_temp
A /var/cache/nginx/scgi_temp
C /etc
C /etc/nginx
C /etc/nginx/conf.d
C /etc/nginx/conf.d/default.conf
C /run
A /run/nginx.pid
$

Resumen

Para concluir, Doker ofrece un amplio conjunto de comandos para administrar contenedores desde su creación hasta su destrucción. Hemos cubierto algunos de los comandos importantes y su uso en este artículo que debería darle una buena idea sobre cómo administrar contenedores docker.

A continuación, descubra algunos de los recursos para aprender DevOps.

Publicaciones relacionadas

Botón volver arriba