Androide

Docker ejecuta el comando con ejemplos

Ejecutar comandos en contenedores con Docker Run

Ejecutar comandos en contenedores con Docker Run

Tabla de contenido:

Anonim

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 es 0.0.0.0 . Si no se especifica ningún protocol , 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. Las host_src pueden ser rw (lectura-escritura) y ro (solo lectura)) Si no se especifica ninguna opción, el valor predeterminado es rw .

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

Testing Docker Volumes

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.

estibador