Reiniciar un contenedor Docker
- Extraiga una imagen de Nginx del Docker Hub
- Ejecutar un contenedor desde la imagen
- Reiniciar un contenedor en ejecución
- Reiniciar un contenedor detenido
- El contenedor Docker sale inmediatamente
- Conclusión
Cuando se detiene un contenedor que anteriormente se ejecutaba en segundo plano, la ventana acoplable proporciona algunos comandos que podemos usar para reiniciar el contenedor.
En este tutorial, aprenderemos cómo reiniciar un contenedor docker con un servidor Nginx ejecutándose en segundo plano. También aprenderemos cómo algunos comandos conducen a la terminación inmediata de un contenedor.
Extraiga una imagen de Nginx del Docker Hub
Para comenzar, debemos extraer una imagen de Nginx del centro de la ventana acoplable para ejecutar imágenes desde ella. Sin embargo, puede crear su imagen personalizada usando Dockerfile
.
Abra la ventana de terminal en su computadora y use el siguiente comando para extraer la imagen.
~$ docker pull nginx:alpine
Ejecutar un contenedor desde la imagen
En esta sección, ejecutaremos un contenedor con un servidor Nginx en segundo plano. Use el siguiente comando para ejecutar un contenedor con el nombre aplicación web
.
~$ docker run --name web-app -d -p 8000:80 nginx:alpine
En este comando, hemos usado el indicador --name
para crear un nombre para el contenedor. Además, también hemos utilizado la bandera -d
, que nos permite ejecutar un contenedor en segundo plano.
Por último, hemos agregado el indicador -p
para publicar el puerto del contenedor en el host. Puede usar el siguiente comando para verificar que el contenedor esté en funcionamiento.
~$ docker ps
Producción :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c18fa4102fb2 nginx:alpine "/docker-entrypoint.…" 5 seconds ago Up 3 seconds 0.0.0.0:8000->80/tcp web-app
Reiniciar un contenedor en ejecución
Hay dos enfoques que podemos usar para reiniciar un contenedor. El primer enfoque usa el comando docker start
, mientras que el segundo enfoque usa el comando docker restart
.
El comando docker start
se usa para iniciar un contenedor detenido, y el comando docker restart
se usa para reiniciar un contenedor en ejecución.
Dado que nuestro contenedor ya se está ejecutando, use el siguiente comando para reiniciar el contenedor aplicación web
.
~$ docker restart web-app
Use el siguiente comando para verificar que el contenedor esté en funcionamiento después de reiniciar el contenedor.
~$ docker ps
Producción :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c18fa4102fb2 nginx:alpine "/docker-entrypoint.…" 20 minutes ago Up 1 second 0.0.0.0:8000->80/tcp web-app
Reiniciar un contenedor detenido
Este enfoque es el mismo que el anterior. Debemos usar el comando docker stop
para detener el contenedor en ejecución.
Una vez detenido el contenedor, utilice el comando docker start
para reiniciar el contenedor detenido. Ejecute los siguientes comandos para ver cómo funciona esto en la práctica.
~$ docker stop web-app
Producción :
web-app
Si ejecuta el comando docker ps -a
para enumerar todos los contenedores en ejecución y detenidos, puede ver que se ha salido del estado del contenedor aplicación web
, lo que significa que el contenedor se ha detenido.
~$ docker ps -a
Producción :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c18fa4102fb2 nginx:alpine "/docker-entrypoint.…" 32 minutes ago Exited (0) About a minute ago web-app
Finalmente, use el siguiente comando para reiniciar el contenedor.
~$ docker start web-app && docker ps
Producción :
web-app
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c18fa4102fb2 nginx:alpine "/docker-entrypoint.…" 37 minutes ago Up Less than a second 0.0.0.0:8000->80/tcp web-app
El contenedor Docker sale inmediatamente
El contenedor de la sección anterior no finalizó porque el contenedor tenía un proceso Nginx ejecutándose en segundo plano.
Hay casos en los que el contenedor docker sale inmediatamente si ha terminado de ejecutar su proceso. Para ilustrar esto, ejecute el siguiente comando para crear un nuevo contenedor con el nombre temp-web-app
.
~$ docker run -w /com/web-app/ --name temp-web-app -p 8080:80 nginx:alpine pwd
Producción :
/com/web-app
Tenga en cuenta que este comando finaliza inmediatamente después de imprimir el directorio de trabajo /com/web-app
. Esto se debe a que el contenedor sale una vez que su proceso principal ejecuta el comando pwd
.
Por lo tanto, los comandos como el anterior deben usarse con fines de prueba y no para ejecutar contenedores con un servidor, una base de datos o un proceso de aplicación. Use el siguiente comando para verificar el estado del contenedor temp-web-app
.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fb051673c15f nginx:alpine "/docker-entrypoint.…" 14 minutes ago Exited (0) 3 minutes ago temp-web-app
Cualquier intento de reiniciar el contenedor no funcionará ya que el comando predeterminado se establece durante la puesta en marcha inicial. Lo que significa que el contenedor siempre terminará después de ejecutar el comando pwd
donde sale el proceso principal del contenedor.
Conclusión
Aprendimos en este tutorial cómo reiniciar un contenedor en Docker. Hemos cubierto cómo iniciar un contenedor en ejecución y parada.
Hemos aprendido el propósito de ejecutar contenedores que salen inmediatamente sin que se ejecuten procesos en segundo plano.
David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.
LinkedIn GitHubArtículo relacionado - Docker Container
- Comprobar si el contenedor Docker se está ejecutando o no
- Ejecute contenedores de forma continua en segundo plano con Docker
- Eliminar contenedores de forma permanente en Docker
- Ingrese un contenedor Docker en ejecución con un nuevo pseudo TTY
- La diferencia entre el contenedor de Docker y la imagen de Docker
- Listar solo los contenedores detenidos en Docker