Acerca del proyecto
En este post vamos a ver el ciclo de vida del contenedor docker y las instrucciones básicas que necesitamos para poder ejecutar acciones en un contenedor, estas instrucciones normalmente son utilizadas para todo el ciclo de vida de un contenedor y básicamente nos permiten realizar diferentes acciones para los diferentes estados que puede manejar los contenedores como lo pueden ser crear, suspender, pausar, entre otros. Las siguientes instrucciones que vamos a ver solamente se pueden ejecutar sobre un contenedor.
Conocimiento previo
Para realizar este proyecto se requiere conocimiento previo de los siguientes temas, si aun no has trabajado con lo que se menciona en la siguiente tabla, allí están los links a los post para que puedas dar un repaso adicional o puedas recordar el conocimiento necesario para poder realizar este proyecto.
Proyecto | Descripción |
---|---|
Introducción docker | Iniciamos con docker, donde conoceremos los temas que vamos a trabajar en este curso, aprenderemos a usar este gestor de contenedores con todas sus funcionalidades, ademas realizaremos ejercicios prácticos para reforzar el conocimiento aprendido. |
¿Qué es docker? | ¿Qué es docker?, es una plataforma que permite crear e implementar aplicaciones rápidamente. En este post aprenderás a detalle la definición, sus características y la diferencia con las tecnologías de aplicaciones tradicionales. |
¿Qué es un contenedor? | ¿Qué es un contenedor de docker?, lo podemos definir como una forma de limitar los recursos para una aplicación, donde solo va a contener sus librerías, configuraciones, entre otros. En este post explicamos a detalle los contenedores. |
¿Qué es una imagen en docker? | ¿Qué es una imagen en docker?, es un archivo compuesto por múltiples capas, que se utiliza para ejecutar código en un contenedor de docker. En este post aprenderás la definición y como usar las imagenes para crear contenedores. |
Docker hola mundo | Empezamos con el primer ejemplo creando contenedores en docker, vamos a explicar la instrucción para descargar la primera imagen y poder ejecutar un servidor en un contenedor, adicionalmente explicaremos algunos comandos para gestionar las imágenes y manipular los contenedores. |
Ciclo de vida del contenedor docker
Haciendo foco particularmente en el contenedor, podemos mencionar que los diferentes estados que este puede manejar son Created
, Running
, Stopped
, Paused
, Killed
.
Visto gráficamente estos son los estados con las transiciones correspondientes a cada comando que se puede ejecutar sobre un contenedor.[1]
Comandos ciclo de vida
docker run
El comando docker run primero crea una capa de contenedor grabable sobre la imagen especificada y luego la inicia usando el comando especificado. Es decir, la ejecución de Docker es equivalente a la API /containers/create then /containers/(id)/start. Un contenedor detenido se puede reiniciar con todos sus cambios anteriores intactos usando Docker Start. Vea docker ps -a para ver una lista de todos los contenedores.[2]
Uso
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Opciones
El listado de las opciones se detalla en la tabla de la documentación oficial, allí encontrará la información de cada opción y su descripción.
Ejemplo
Al ejecutar docker run con las siguientes opciones, crea un contenedor y lo deja activo.
docker run -p 80:80 -d nginx
docker create
El comando docker create, crea una capa de contenedor grabable sobre la imagen especificada y la prepara para ejecutar con un comando especificado. La identificación del contenedor se imprime en STDOUT. Esto es similar a docker run -d excepto que el contenedor nunca se inicia. Luego puede usar el docker start para iniciar el contenedor en cualquier momento.
Esto es útil cuando desea crear una configuración de contenedor con anticipación para que esté lista, liego ejecutarla cuando la necesite. El estado inicial del nuevo contenedor es created.[3]
Uso
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
Opciones
El listado de las opciones se detalla en la tabla de la documentación oficial, allí encontrará la información de cada opción y su descripción.
Ejemplo
Al ejecutar docker run con las siguientes opciones, crea un contenedor y lo deja creado sin iniciar.
docker create nginx -p 80:80
docker start
Iniciar uno o más contenedores detenidos.[4]
Uso
docker start [OPTIONS] CONTAINER [CONTAINER...]
Opciones
El listado de las opciones se detalla en la tabla de la documentación oficial, allí encontrará la información de cada opción y su descripción.
Ejemplo
Al ejecutar docker start con el identificador del contenedor, este lo inicia si esta detenido.
docker start ID_CONTENEDOR
docker restart
Resetea uno o mas contenedores.[5]
Uso
docker restart [OPTIONS] CONTAINER [CONTAINER...]
Opciones
El listado de las opciones se detalla en la tabla de la documentación oficial, allí encontrará la información de cada opción y su descripción.
Ejemplo
docker restart ID_CONTENEDOR
docker stop
Detener uno o más contenedores en ejecución.[6]
Uso
docker stop [OPTIONS] CONTAINER [CONTAINER...]
Opciones
El listado de las opciones se detalla en la tabla de la documentación oficial, allí encontrará la información de cada opción y su descripción.
Ejemplo
docker stop ID_CONTENEDOR
docker pause
El comando docker pause suspende todos los procesos en los contenedores especificados. En Linux, esto usa el congelador cgroup. Tradicionalmente, cuando se suspende un proceso, se utiliza la señal SIGSTOP, que se puede observar cuando el proceso se suspende. Con el congelador cgroup, el proceso no es consciente y no puede capturar, que se está suspendiendo, y posteriormente se reanuda. En Windows, solo se pueden pausar los contenedores de Hyper-V.[7]
Uso
docker pause CONTAINER [CONTAINER...]
Ejemplo
docker pause ID_CONTENEDOR
docker unpause
El comando docker unpause anula la suspensión de todos los procesos en los contenedores especificados. En Linux, hace esto usando el congelador cgroup.[8]
Uso
docker unpause CONTAINER [CONTAINER...]
Ejemplo
docker unpause ID_CONTENEDOR
docker kill
El subcomando docker kill mata uno o más contenedores. El proceso principal dentro del contenedor se envía señal SIGKILL (predeterminado), o la señal que se especifica con la opción --signal. Puede eliminar un contenedor utilizando la ID, el prefijo de identificación o el nombre del contenedor.[8]
Uso
docker kill [OPTIONS] CONTAINER [CONTAINER...]
Opciones
El listado de las opciones se detalla en la tabla de la documentación oficial, allí encontrará la información de cada opción y su descripción.
Ejemplo
docker kill ID_CONTENEDOR
docker rm
Retire uno o más contenedores.[9]
Uso
docker rm [OPTIONS] CONTAINER [CONTAINER...]
Opciones
El listado de las opciones se detalla en la tabla de la documentación oficial, allí encontrará la información de cada opción y su descripción.
Ejemplo
docker rm ID_CONTENEDOR
docker ps
Lista todos los contenedores.[10]
Uso
docker ps [OPTIONS] CONTAINER [CONTAINER...]
Opciones
El listado de las opciones se detalla en la tabla de la documentación oficial, allí encontrará la información de cada opción y su descripción.
Ejemplo
docker ps ID_CONTENEDOR
Referencias
[1] medium https://medium.com/@nagarwal/lifecycle-of-docker-container-d2da9f85959, Consultado Junio 2020
[2] docker-run https://docs.docker.com/engine/reference/commandline/run/, Consultado Junio 2020
[3] docker create https://docs.docker.com/engine/reference/commandline/create/, Consultado Junio 2020
[4] docker-start https://docs.docker.com/engine/reference/commandline/start/, Consultado Junio 2020
[5] docker-restart https://docs.docker.com/engine/reference/commandline/restart/, Consultado Junio 2020
[6] docker-stop https://docs.docker.com/engine/reference/commandline/stop/, Consultado Junio 2020
[7] docker-pause https://docs.docker.com/engine/reference/commandline/pause/, Consultado Junio 2020
[8] docker-kill https://docs.docker.com/engine/reference/commandline/kill/, Consultado Junio 2020
[9] docker-rm https://docs.docker.com/engine/reference/commandline/rm/, Consultado Junio 2020
[10] docker-ps https://docs.docker.com/engine/reference/commandline/ps/, Consultado Junio 2020