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
- Creación de imágenes personalizadas en Docker
- Visualización en tiempo real del estado de un Clúster en Docker
- Que son y como se configuran los servicios en Docker
- Como crear un Clúster en Docker
- Instalar Docker en CentOS 8
- Instalar Docker en Windows Server 2019
- Instalar Docker en Windows 10
- Redes en Docker
Me dedico a la Administración de Sistemas y he creado este blog para compartir mis conocimientos con toda la comunidad y así aportar mi granito de arena y ayudar a todo el que lo necesite.