Diario del SysAdminSoftware Lilbre

Docker Daemonizar un Contenedor

Docker Daemonizar un contenedor
Docker daemonizar un contendor
Docker daemonizar un contendor

¿Qué significa daemonizar un contenedor?

Docker daemonizar un contenedor significa que vamos a dejarlo corriendo una vez creado, sin necesidad de haber instalado necesariamente un servicio.

En el post anterior vimos como crear un contenedor a partir de una imagen previamente descargada. https://blog.carreralinux.com.ar/2020/06/docker-imagenes-contenedores-instancias/.

El problema que observamos es que cuando salimos de la instancia, el contenedor queda en estado «Exited» podemos traducirlo como «Parado», por lo tanto es bastante poco lo que podemos hacer con él.

Para seguir avanzando vamos a crear un contenedor a partir de una imagen,  vamos a correr un comando que siga ejecutandose cuando hayamos salido de la instancia. A esto le llamamos Docker daemonizar un Contenedor.

Antes de seguir veamos cuales son los contenedores que tenemos y cuales estan «Exited», para esto vamos a usar el comando:  docker ps -a

 

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
ec3d1110711a        debian:buster       "/bin/bash"         2 days ago          Exited (0) 2 days ago                         dazzling_bouman
fa90da468347        debian:buster       "/bin/bash"         2 days ago          Exited (130) 2 days ago                       festive_khayyam
ed5df8e5b132        debian:buster       "bash"              2 days ago          Exited (0) 2 days ago                         friendly_ride
1a5e3742bcc9        debian:buster       "bash"              2 days ago          Exited (0) 2 days ago                         crazy_turing
fabian@D10-docker:~$ 
docker ps -a

Lo que estamos observando es que tenemos algunas instancias que estan paradas y que no vamos a usar porque son las que usamos para hacer pruebas. Por lo tanto las vamos a eliminar.

docker rm crazy_turing dazzling_bouman festive_khayyam friendly_ride 
crazy_turing
dazzling_bouman
festive_khayyam
friendly_ride
docker rm crazy_turing dazzling_bouman festive_khayyam friendly_ride

Observamos ahora como queda nuestro repositorio de contenedores local luego de borrar.

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
docker ps -a

Ahora que no tenemos ninguna instacia corriendo podemos consultar cuales son las imagenes que tenemos descargadas, para esto utilizamos el comando:  docker images

~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
debian              buster              5971ee6076a0        3 weeks ago         114MB
docker images

Como vemos en nuestro repositorio local de imágenes encontramos debian:buster vamos a utilizar esta para crear un contenedor daemonizado.

¿Cómo daemonizar?

Doker daemonizar un contenedor significa que el mismo no termine cuando lo lanzamos como por ejemplo el comando while o el comando tail veamos un ejemplo de cada uno al correr dos contenedores.

Ejemplo 1: Corremos un contenedor ejecutando el comando while para que no se apague cuando salgamos. El comando es el siguiente:

»docker

Para saber que la instancia esta corriendo volvemos a ejecutar el comando: docker ps -a 

 docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
55ed8cdec862        debian:buster       "/bin/bash -c 'while…"   About a minute ago   Up About a minute                       unruffled_greider
docker ps -a

Los parámetros utilizados son:

-d: Ejecutar el contenedor y daemonizarlo
-c: El comando que vamos a ejecutar.

Para acceder a la instancia (contenedor corriendo) usamos el comando docker exec con sus respectivos parámetros

docker exec -it unruffled_greider /bin/bash
root@55ed8cdec862:/# 
docker exec -it unruffled_greider /bin/bash

Los parámetros utilizados son:

exec: ejecutar un comando
-i: interactivo
-t: tty  obtener una pseudo-terminal

Para verificar que esta corriendo salimos ejecutando el comando exit y volvemos a ejecutar el comando docker ps -a.

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
55ed8cdec862        debian:buster       "/bin/bash -c 'while…"   8 minutes ago       Up 8 minutes                            unruffled_greider
doker ps -a

Vamos a utilizar ahora otro comando para daemonizar creando una segunda instancia de la imagen debian:buster.

docker run -d debian:buster  /bin/bash -c "tail -f /dev/null"
b526fd0c9cbbeb8e4e8ac1f386699e084e967e208e941a87c02954e4e89283b5

Volvemos a ejecutar el comando docker ps -a para verificar que las dos instancias estan corriendo.

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
b526fd0c9cbb        debian:buster       "/bin/bash -c 'tail …"   About a minute ago   Up About a minute                       objective_golick
55ed8cdec862        debian:buster       "/bin/bash -c 'while…"   11 minutes ago       Up 11 minutes                           unruffled_greider
docker ps -a

 

Recorda que para usar docker hub vas a tener que ingresar al siguiente link: https://hub.docker.com

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *