Ejecutar comandos en contenedores con Docker Run
Tabla de contenido:
- Docker Run Command
- Ejecute el contenedor en primer plano
- Ejecute el contenedor en modo separado
- Retire el contenedor después de salir
- Establecer el nombre del contenedor
- Puertos de contenedores de publicación
- Compartir datos (volúmenes de montaje)
- Ejecute el contenedor de forma interactiva
- Conclusión
Docker es una plataforma que le permite desarrollar, probar e implementar aplicaciones como contenedores portátiles y autosuficientes que se ejecutan prácticamente en cualquier lugar.
El comando
docker run
crea un contenedor a partir de una imagen dada y lo inicia usando un comando dado. Es uno de los primeros comandos con los que debe familiarizarse cuando comience a trabajar con Docker., utilizaremos la imagen oficial de Nginx para mostrar varias formas de ejecutar un contenedor Docker.
Docker Run Command
El comando
docker run
toma la siguiente forma:
docker run IMAGE
El nombre de la imagen a partir de la cual se debe crear el contenedor es el único argumento requerido para el comando
docker run
. Si la imagen no está presente en el sistema local, se extrae del registro.
Si no se especifica ningún comando, el comando especificado en las instrucciones
CMD
o
ENTRYPOINT
se ejecuta al ejecutar el contenedor.
A partir de la versión 1.13, la CLI de Docker se ha reestructurado y todos los comandos se han agrupado bajo el objeto con el que interactúan.
Dado que el comando
run
interactúa con los contenedores, ahora es un subcomando del
docker container
. La sintaxis del nuevo comando es la siguiente:
docker container run IMAGE
La antigua sintaxis anterior a 1.13 todavía es compatible. Debajo del capó, el comando
docker run
es un alias para la
docker container run
. Se alienta a los usuarios a usar la nueva sintaxis de comandos.
Puede encontrar una lista de todas las opciones de
docker container run
Docker en la página de documentación de Docker.
Ejecute el contenedor en primer plano
De forma predeterminada, cuando no se proporciona ninguna opción al comando de
docker run
, el proceso raíz se inicia en primer plano. Esto significa que la entrada, la salida y el error estándar del proceso raíz se adjuntan a la sesión de terminal.
docker container run nginx
La salida del proceso nginx se mostrará en su terminal. Como no hay conexiones con el servidor web, el terminal está vacío.
Para detener el contenedor, finalice el proceso de ejecución de Nginx presionando
CTRL+C
Ejecute el contenedor en modo separado
Para mantener el contenedor en funcionamiento cuando salga de la sesión de terminal, inícielo en modo separado. Esto es similar a ejecutar un proceso de Linux en segundo plano.
Use la opción
-d
para iniciar un contenedor separado:
docker container run -d nginx
050e72d8567a3ec1e66370350b0069ab5219614f9701f63fcf02e8c8689f04fa
El contenedor separado se detendrá cuando finalice el proceso raíz.
Puede enumerar los contenedores en ejecución con el comando
docker container ls
.
Para adjuntar su terminal al proceso raíz del contenedor separado, utilice el comando de conexión del contenedor
docker container attach
.
Retire el contenedor después de salir
De manera predeterminada, cuando el contenedor sale, su sistema de archivos persiste en el sistema host.
Las opciones
--rm
le dicen al comando
docker run
que elimine el contenedor cuando sale automáticamente:
docker container run --rm nginx
La imagen de Nginx puede no ser el mejor ejemplo para limpiar el sistema de archivos del contenedor después de que el contenedor salga. Esta opción generalmente se usa en contenedores en primer plano que realizan tareas a corto plazo, como pruebas o copias de seguridad de bases de datos.
Establecer el nombre del contenedor
En Docker, cada contenedor se identifica por su
UUID
y nombre. Por defecto, si no se establece explícitamente, el nombre del contenedor es generado automáticamente por el demonio Docker.
Use la opción
--name
para asignar un nombre personalizado al contenedor:
docker container run -d --name my_nginx nginx
El nombre del contenedor debe ser único. Si intenta iniciar otro contenedor con el mismo nombre, obtendrá un error similar a este:
docker: Error response from daemon: Conflict. The container name "/my_nginx" is already in use by container "9…c". You have to remove (or rename) that container to be able to reuse that name.
Ejecute
docker container ls -a
para enumerar todos los contenedores y ver sus nombres:
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9d695c1f5ef4 nginx "nginx -g 'daemon of…" 36 seconds ago Up 35 seconds 80/tcp my_nginx
Los nombres significativos son útiles para hacer referencia al contenedor dentro de una red Docker o cuando se ejecutan comandos de la CLI de docker.
Puertos de contenedores de publicación
De manera predeterminada, si no se publican puertos, el proceso que se ejecuta en el contenedor solo es accesible desde el interior del contenedor.
Publicar puertos significa asignar puertos de contenedor a los puertos de la máquina host para que los puertos estén disponibles para servicios fuera de Docker.
Para publicar un puerto, use las opciones
-p
siguiente manera:
-p host_ip:host_port:container_port/protocol
- Si no se especifica
host_ip
, el valor predeterminado es0.0.0.0
. Si no se especifica ningúnprotocol
, el valor predeterminado es TCP. Para publicar múltiples puertos, use múltiples opciones-p
.
Para asignar el puerto TCP 80 (nginx) en el contenedor al puerto 8080 en la interfaz host localhost, debe ejecutar:
docker container run --name web_server -d -p 8080:80 nginx
Puede verificar que el puerto esté publicado abriendo
http://localhost:8080
en su navegador o ejecutando el siguiente comando
curl
en el host Docker:
curl -I
La salida se verá más o menos así:
HTTP/1.1 200 OK Server: nginx/1.17.6 Date: Tue, 26 Nov 2019 22:55:59 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Tue, 19 Nov 2019 12:50:08 GMT Connection: keep-alive ETag: "5dd3e500-264" Accept-Ranges: bytes
Compartir datos (volúmenes de montaje)
Cuando se detiene un contenedor, se eliminan todos los datos generados por el contenedor. Los Docker Volumes son la forma preferida de hacer que los datos persistan y compartirlos en múltiples contenedores.
Para crear y administrar volúmenes, use las opciones
-p
siguiente manera:
-v host_src:container_dest:options
-
host_src
puede ser una ruta absoluta a un archivo o directorio en el host o un volumen con nombre.container_dest
es una ruta absoluta a un archivo o directorio en el contenedor. Lashost_src
pueden serrw
(lectura-escritura) yro
(solo lectura)) Si no se especifica ninguna opción, el valor predeterminado esrw
.
Para explicar cómo funciona esto, creemos un directorio en el host y
index.html
un archivo
index.html
:
mkdir public_html
echo "Testing Docker Volumes" > public_html/index.html
Luego, monte el directorio
public_html
en
/usr/share/nginx/html
en el contenedor:
docker run --name web_server -d -p 8080:80 -v $(pwd)/public_html:/usr/share/nginx/html nginx
En lugar de especificar la ruta absoluta al directorio
public_html
, estamos utilizando el comando
$(pwd)
, que imprime el directorio de trabajo actual.
Ahora, si escribe
http://localhost:8080
en su navegador, debería ver el contenido del archivo
index.html
. También puedes usar
curl
:
curl
Ejecute el contenedor de forma interactiva
Cuando trabaje con procesos interactivos como
bash
, use las opciones
-i
y
-t
para iniciar el contenedor.
Las opciones
-it
le dicen a Docker que mantenga la entrada estándar conectada al terminal y asigne un pseudo-tty:
docker container run -it nginx /bin/bash
El shell Bash del contenedor se conectará a la terminal y el símbolo del sistema cambiará:
root@1da70f1937f5:/#
Ahora, puede interactuar con el shell del contenedor y ejecutar cualquier comando dentro de él.
En este ejemplo, proporcionamos un comando (
/bin/bash
) como argumento para el comando
docker run
que se ejecutó en lugar del especificado en el Dockerfile.
Conclusión
Docker es el estándar para empaquetar e implementar aplicaciones y un componente esencial de CI / CD, automatización y DevOps.
El comando ejecutar contenedor Docker se utiliza para crear y ejecutar contenedores Docker.
estibadorComando Echo en Linux con ejemplos
El comando echo es uno de los comandos más básicos y de uso más frecuente en Linux. Los argumentos pasados a echo se imprimen en la salida estándar.
Comando curl en linux con ejemplos
Curl es una utilidad de línea de comandos para transferir datos desde o hacia un servidor diseñado para funcionar sin interacción del usuario. En este tutorial, le mostraremos cómo usar la herramienta de rizo a través de ejemplos prácticos y explicaciones detalladas de las opciones de rizo más comunes.
Comando de corte de Linux con ejemplos
Cut es una utilidad de línea de comandos que le permite cortar partes de líneas de archivos específicos o datos canalizados e imprimir el resultado en la salida estándar. En este tutorial, le mostraremos cómo usar el comando de corte de Linux a través de ejemplos prácticos y explicaciones detalladas de las opciones de corte más comunes.