Comandos básicos para la gestión de contenedores en Docker

En esta entrada voy a explicar unas de las primeras cosas que hay que saber cuando se está aprendiendo Docker y no es otra que aprender los comandos básicos para trabajar con los contenedores.

Hoy me voy a centrar en enseñaros a crear, iniciar y eliminar contenedores que son acciones básicas que tenemos que dominar cuando empezamos en el mundo de Docker.

Creación de contenedores

Para crear un contenedor utilizaremos el comando docker seguido de run y a continuación el nombre de la imagen que queremos utilizar para crear el contenedor.

Como no podía ser de otra forma vamos a crear nuestro primer contenedor con el clásico Hola Mundo 🙂 y le vamos a poner un nombre personalizado para que nos sea más fácil identificarlo en el futuro.

sergio@server1:~$ docker run --name holamundo hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

Creación de contenedores en modo interactivo

Otra forma de crear un contenedor es hacerlo en modo interactivo (el contenedor debe ser compatible). Esto nos permitirá interactuar directamente con el contenedor.

Para que lo entendáis mejor vamos a crear un nuevo contenedor basado en una imagen de Ubuntu y veréis que cuando lo creemos automáticamente nos cambiará el prompt y de esta forma tan sencilla podremos interactuar directamente con la consola de Ubuntu al igual que hacemos en otros servidores Linux.

El comando a utilizar es igual al anterior pero añadiendo el modificador -it

sergio@server1:~$ docker run -it --name ubuntu1 ubuntu
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
08c01a0ec47e: Pull complete
Digest: sha256:669e010b58baf5beb2836b253c1fd5768333f0d1dbcb834f7c07a4dc93f474be
Status: Downloaded newer image for ubuntu:latest
root@c2f4328bc7d0:/# uname -a
Linux c2f4328bc7d0 5.4.0-97-generic #110-Ubuntu SMP Thu Jan 13 18:22:13 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
root@c2f4328bc7d0:/#

Creación de contenedores en modo background

Otras veces necesitamos trabajar con contenedores pero no necesitamos que tenga abierta una shell o terminal activa, para estos casos tenemos que crear los contenedores en modo background o en segundo plano (para esto la imagen debe estar preparada para funcionar en este modo ya que en caso contrario el contenedor se parará).

Para este ejemplo vamos a crear un nuevo contenedor que utilizará la imagen de NGINX y se quedará ejecutandose en segundo plano dando servicio, por ejemplo, a la web que tengamos configurada en dicho NGINX.

sergio@server1:~$ docker run -d --name servidorweb nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
5eb5b503b376: Pull complete
1ae07ab881bd: Pull complete
78091884b7be: Pull complete
091c283c6a66: Pull complete
55de5851019b: Pull complete
b559bad762be: Pull complete
Digest: sha256:2834dc507516af02784808c5f48b7cbe38b8ed5d0f4837f16e78d00deb7e7767
Status: Downloaded newer image for nginx:latest
025b15972b9b22f386f236d9798b1d4ab7256e737f45bca8464077377d5dd4af
sergio@server1:~$

Iniciar un contenedor ya creado

Si queremos iniciar un contenedor que previamente hemos creado y actualmente se encuentra parado lo primero que tendremos que hacer es obtener su id, para ello utilizaremos el siguiente comando:

sergio@server1:~$ docker ps -a
CONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS                      PORTS     NAMES
025b15972b9b   nginx         "/docker-entrypoint.…"   3 minutes ago    Up 3 minutes                80/tcp    inspiring_newton
c2f4328bc7d0   ubuntu        "bash"                   13 minutes ago   Exited (0) 7 minutes ago              sad_jemison
846a1c3d9a53   hello-world   "/hello"                 20 minutes ago   Exited (0) 20 minutes ago             fervent_goldberg
51db269cc481   hello-world   "/hello"                 23 minutes ago   Exited (0) 23 minutes ago             vibrant_cohen

Copiamos el container id o el nombre y ejecutamos el siguiente comando:

sergio@server1:~$ docker start container id o nombre

Si queremos iniciarlo pero en modo interactivo el comando a utilizar será el mismo pero añadiendo el parámetro -i

sergio@server1:~$ docker start -i container id o nombre

Ejecutar comandos contra contenedores iniciados

Si tenemos un contenedor, por ejemplo iniciado en background, y queremos ejecutar un comando para que nos devuelva un resultado sin necesidad de acceder al contenedor podemos utilizar el siguiente comando:

docker exec nombre_contenedor comando_a_ejecutar

Os pongo un ejemplo para que lo entendáis mejor. Imaginaros que tenemos un contenedor que está ejecutando Ubuntu, pues bien, vamos a decirle que nos muestre la fecha y la hora del sistema operativo que se encuentra dentro de ese contenedor, el comando a utilizar sería:

sergio@docker:~$ docker exec ubuntu2 date
Tue Sep 13 19:21:30 UTC 2022

Este último comando nos mostrará la información pero sin tener que acceder al contenedor, si queremos acceder a él y trabajar como si estuviéramos dentro del sistema tendríamos que utilizar el siguiente comando:

docker exec -it nombre_contenedor bash

Eliminar contenedores

Si dejamos de utilizar un contenedor y queremos eliminarlo podemos hacerlo de una forma muy sencilla.

Lo primero que haremos será ejecutar el siguiente comando para ver la lista de contenedores que tenemos.

sergio@server1:~$ docker ps -a
CONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS                      PORTS     NAMES
025b15972b9b   nginx         "/docker-entrypoint.…"   10 minutes ago   Up 10 minutes               80/tcp    inspiring_newton
c2f4328bc7d0   ubuntu        "bash"                   19 minutes ago   Exited (0) 2 minutes ago              sad_jemison
846a1c3d9a53   hello-world   "/hello"                 27 minutes ago   Exited (0) 27 minutes ago             fervent_goldberg
51db269cc481   hello-world   "/hello"                 29 minutes ago   Exited (0) 29 minutes ago             vibrant_cohen

Una vez identificado el contenedor que queremos eliminar simplemente copiaremos su container id y ejecutaremos el siguiente comando:

sergio@server1:~$ docker rm container id o nombre

Y listo ya conocéis los comandos básicos para crear, iniciar y eliminar contenedores en docker. En próxima entras os enseñaré más cosas como pueden ser manejar imágenes, redes, volúmenes, etc…

Como siempre espero os haya sido de utilidad.

Entradas relacionadas

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.