Docker
contenedor
run

Ejecutar un contenedor Docker

Este post enumera las 5 preguntas más frecuentes sobre la ejecución de contenedores Docker. Docker es uno de los servicios mejor documentados que existen, pero siempre es difícil encontrar la pregunta exacta que estás buscando. Si alguna vez has tenido una pregunta como la siguiente, esta lista debería ayudarte.

1. El comando para ejecutar un contenedor Docker (Ejecutar una imagen)

El comando para ejecutar un contenedor Docker es docker container run.

Este comando realiza la misma función que el comando docker run, y es una nueva adición a la estructura de comandos modernizada de Docker. Creo que docker container run es mucho más intuitivo y fácil de distinguir, incluso cuando se utiliza junto con los otros comandos que veremos más adelante, Recomiendo usar este comando.

El comando básico docker container run tiene el siguiente aspecto

$ docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]]
  • [OPTIONS]: Parámetros opcionales utilizados para ejecutar el contenedor. Por ejemplo, -d ejecuta el contenedor en segundo plano, -p establece la asignación de puertos entre el host y el contenedor, y -v se utiliza para montar un volumen.
  • IMAGE: Esta es la imagen Docker para ejecutar el contenedor y debe ser especificada. Puede ser una imagen local o una imagen en un registro remoto como Docker Hub.
  • COMMAND:El comando a ejecutar cuando se inicia el contenedor. Es un parámetro opcional, Si se especifica, el comando especificado se ejecutará en lugar de la directiva CMD dentro del archivo Docker de la imagen Docker especificada en la parte IMAGE.
  • [ARG]: El argumento pasado a [COMMAND], este es un parámetro opcional.

He aquí un ejemplo

$ docker container run -d -p 8080:80 --name my_container nginx

Para explicar las opciones que usamos aquí, son

  • -d: Ejecutar el contenedor en segundo plano (modo detach).
  • -p 8080:80: mapea el puerto 8080 del host al puerto 80 del contenedor.
  • --name my_container: Establece el nombre del contenedor como my_container.
  • nginx: Ejecuta el contenedor basado en la última versión de la imagen oficial de Docker nginx.

Si no tienes esta versión de la imagen nginx en tu entorno local, se descargará del Docker Hub.

En otras palabras, el comando anterior crea un contenedor llamado my_container basado en la imagen nginx, y asigna el puerto 8080 en el host al puerto al puerto 80 del contenedor, y ejecuta el contenedor en segundo plano.

2. Resolución de problemas de un contenedor que no se ejecuta

Como vimos en la Sección 1, puedes tener una experiencia frustrante cuando tu contenedor no se ejecuta correctamente a pesar de usar el comando `docker container run'. Hay muchas razones por las que un contenedor Docker puede no ejecutarse, pero aquí están algunas de las más comunes y sus soluciones.

2.1. La imagen no existe

Para ejecutar un contenedor Docker, debe existir una imagen de ese contenedor en tu sistema local o estar disponible para su descarga desde una ubicación remota como Docker Hub. Si la imagen no existe y la descarga falla, comprueba tu situación de red e intenta descargar manualmente la imagen usando el comando `docker image pull' y luego ejecuta el contenedor.

2.2. El servicio Docker no se está ejecutando

Si el servicio docker no se está ejecutando, no podrás ejecutar el contenedor. En este caso, ejecute systemctl start docker en Linux o Docker Desktop en MacOS y Windows, y compruebe el icono de la bandeja para ver si Docker está funcionando correctamente.

2.3. Recursos insuficientes para contenedores

Los contenedores usan mucha CPU o memoria, y si tu sistema no tiene suficientes recursos, puede que no funcionen. En este caso, necesitas terminar aplicaciones o contenedores innecesarios para liberar los recursos requeridos, y luego ejecutar el contenedor.

2.4. Errores de configuración del contenedor

Si el comando dockerfile o docker container run contiene configuraciones incorrectas, el contenedor podría no ejecutarse. En este caso, debe comprobar la configuración, solucionar el problema y ejecutar el contenedor de nuevo. Por favor, lea la Sección 1 de nuevo e intente ejecutarlo.

2.5. El contenedor termina inmediatamente

Si el comando ejecutable de un contenedor termina rápidamente (por ejemplo, un comando que emite "¡Hola, Mundo!) el contenedor puede salir inmediatamente después de la ejecución y parecer que no se está ejecutando. En este caso, debes modificar el comando para mantener el contenedor en ejecución, o utilizar el comando `docker container logs' para ver la salida del contenedor.

Si sigues teniendo problemas después de solucionar estos problemas, utiliza el comando docker container logs [container_id] para ver los registros del contenedor, Puedes añadir la opción -it al comando docker container run para ejecutar el contenedor en modo interactivo y ver el problema por ti mismo. Por favor, vea Sección 5 para esta parte.

3. Cómo mantener en ejecución los ganchos de ejecución automática de contenedores

Hay varias formas de autoarrancar un contenedor Docker. Las formas más comunes son utilizar una política de reinicio Docker o utilizar Docker Compose.

3.1. Política de reinicio de Docker

Docker proporciona una política de reinicio que reinicia automáticamente un contenedor cuando falla o cuando se inicia el demonio Docker (el programa que gestiona todos los procesos de Docker en segundo plano). Puede utilizarla para ejecutar contenedores automáticamente.

Para especificar una política de reinicio, añada la opción --restart al comando docker container run. Las políticas de reinicio tienen opciones intuitivas como no, on-failure, always, y unless-stopped.

Por ejemplo, el siguiente comando indica al contenedor que se reinicie siempre que se detenga:

docker run -d --restart always mi-contenedor

3,2. Docker Compose

Docker Compose es una herramienta que te permite definir y gestionar múltiples contenedores. Puedes utilizar estos compuestos Docker para lanzar contenedores automáticamente.

Docker Compose utiliza un formato de archivo YAML para definir los servicios. Dentro de este archivo, puede establecer una política de reinicio para iniciar automáticamente un contenedor. Por ejemplo, este es un ejemplo de un archivo docker-compose.yml:

version: "3"
 
services:
  web:
    image: my-web-app
    restart: always
...

Con esta configuración, el servicio `my-web-app' siempre se iniciará automáticamente.

También puedes utilizar herramientas de orquestación de contenedores, como Docker Swarm y Kubernetes, para iniciar y gestionar contenedores automáticamente. Estas herramientas son útiles para programar, escalar y recuperar contenedores dentro de un clúster.

4. Cómo ejecutar un contenedor por id

El comando docker container run que vimos en Pregunta 1 crea y ejecuta un nuevo contenedor. Si quieres volver a ejecutar un contenedor ya creado, necesitas seguir el método de ejecución por id de contenedor.

Se necesitan dos comandos.

Primero, para obtener el ID del contenedor detenido, escribe el siguiente comando

$ docker container ls --all

Copia la parte del ID del contenedor que has encontrado y ejecútalo con el siguiente comando

docker container start [container-id].

5. Cómo ejecutar el contenedor sh [#5].

Para ejecutar un script shell (sh) dentro de un contenedor Docker, puedes utilizar el comando `docker container exec'. Esto te permite iniciar un nuevo proceso dentro del contenedor en ejecución.

Estos son los comandos para ejecutar un shell dentro de un contenedor Docker

docker container exec -it [container_id] /bin/sh

Donde [container_id] es el ID del contenedor Docker en ejecución. La opción -it inicia una sesión de terminal interactiva con el contenedor, y /bin/sh es el comando a ejecutar.

Si tu contenedor no soporta /bin/sh, sino sólo /bin/bash, puedes escribir algo como esto

$ docker container exec -it [container_id] /bin/bash

Esto iniciará una sesión de shell dentro del contenedor, permitiéndote introducir comandos directamente para manipular archivos, ejecutar procesos, etc.

6. Reflexiones finales

En este post, hemos aprendido cómo ejecutar contenedores Docker, cómo solucionar fallos, cómo ejecutar automáticamente o mantener contenedores en ejecución, cómo ejecutar por ID de contenedor, y cómo ejecutar shells, incluyendo sh, dentro de contenedores. Espero que encuentres este post útil en la creación y ejecución de nuevos contenedores con Docker.

copyright for docker container run

© 2023 All rights reserved.