Modo independiente de Docker

84

¿Qué es el modo independiente en el mundo de Docker? Leí este artículo Enlace , pero no explica exactamente qué significa el modo independiente.

zero_coding
fuente

Respuestas:

141

Puede iniciar un contenedor Docker en modo independiente con una -dopción. Entonces el contenedor se inicia y se ejecuta en segundo plano. Eso significa que inicia el contenedor y puede usar la consola después del inicio para otros comandos.

Lo opuesto al modo independiente es el modo de primer plano. Ese es el modo predeterminado, cuando -dno se usa la opción. En este modo, la consola que está utilizando para ejecutar docker runse adjuntará a la entrada, salida y error estándar. Eso significa que su consola está conectada al proceso del contenedor.

En modo independiente, puede seguir la salida estándar de su contenedor docker con docker logs -f <container_ID>.

Prueba ambas opciones. Siempre uso el modo separado para ejecutar mis contenedores. Espero poder explicarlo un poco más claro.

Sim
fuente
Hola, lo que es confuso acerca de lo que dijo, y lo que dice la documentación de la ventana acoplable es "usted ... podría usar el contenedor después del inicio para otros comandos". Obviamente, en primer plano, está utilizando el contenedor para otros comandos si lo tiene y está en un indicador. Todavía
estoy
3
@BrianBulkowski: eso no es lo que dice esta respuesta en absoluto. La frase "... podría usar la consola después del inicio ..." significa que la terminal desde la que inició el contenedor de la ventana acoplable todavía se puede usar como un shell normal mientras el contenedor de la ventana acoplable se ejecuta en segundo plano.
Inútil
¿También puede canalizar la salida de los registros a un archivo? Si llamo a docker logs -f <container_ID>, mi terminal se está volviendo loco imprimiendo solo una línea tras otra.
Jürgen K.27 de
@ JürgenK. Descubrí que simplemente puedes hacerlo docker logs -f [container_ID] > logs.txt. Si no funciona, intente agregar el indicador '-it' al iniciar el contenedor de la ventana acoplable como lo sugiere @BMitch a continuación.
Sanlok Lee
@Sanlok Lee. Gracias. ¿Es posible establecer un límite para los números de línea del archivo de registro de la ventana acoplable? El tamaño aumenta silenciosamente rápido, necesito aclararlo
Jürgen K.
29

La opción de desconectar en la línea de comando de la ventana acoplable indica que el cliente de la ventana acoplable ( docker) hará una solicitud al servidor ( dockerd), y luego el cliente saldrá mientras esa solicitud continúa en el servidor. Parte de la confusión puede ser que la ventana acoplable parece un proceso único, donde en realidad es una aplicación cliente / servidor donde el cliente es solo una interfaz delgada en una API REST para enviar cada comando al servidor.

Con a docker container run --detach, esto significa que se creará el contenedor, el servidor responderá con un ID de contenedor si tiene éxito y el contenedor continuará ejecutándose en el servidor mientras usted puede ejecutar otros comandos. Esto se usa a menudo para un servidor (por ejemplo, nginx) que desea iniciar en segundo plano mientras continúa ejecutando otros comandos. Tenga en cuenta que aún puede configurar un contenedor con las opciones --interactivey -tty(a menudo abreviadas -it) y luego ejecutar a docker container attachpara conectarse a un contenedor que ya se esté ejecutando. (Tenga en cuenta que hasta que lo adjunte al contenedor que se ejecuta con -itd, cualquier intento del contenedor de leer desde stdin se bloqueará, en lugar de ver un final de entrada que a menudo desencadena una salida inmediata si acaba de aprobar -d).

Si ejecuta sin la opción de desconexión, el cliente ejecutará inmediatamente una llamada de API adjunta después de que se cree el contenedor para que pueda ver la salida y, opcionalmente, proporcionar información al proceso en ejecución en el contenedor. Esto es útil si su contenedor está ejecutando algo interactivo (por ejemplo /bin/bash).

Varios otros comandos permiten la opción de desconectar, incluido el docker-compose up -dque iniciará un proyecto completo y lo dejará ejecutándose en el servidor en segundo plano. También hay muchos de los docker servicecomandos que se desconectarán después de enviar el cambio al servidor para crear o actualizar el estado de destino de un servicio, o si no se desconecta, el cliente esperará hasta que el estado actual del servicio coincida con el estado de destino y puede ver el progreso del despliegue. Tenga en cuenta que con los docker servicecomandos, es posible que deba pasar --detach=falsepara permanecer adjunto, el comportamiento ha cambiado durante el último año dependiendo de su versión.

BMitch
fuente
1
En mi opinión, también tiene sentido mencionar cómo separarse de un contenedor adjunto de forma interactiva ( CTRL-p CTRL-q , --detach-keys)
León
@Leon es un buen consejo, pero asegúrese de estar conectado al contenedor con ambos --interactivey --tty(también conocido como -it) para que funcione.
BMitch
1
¡Gracias @BMitch! Creo que ahora lo entiendo.
VSO
1
Bien explicado @BMitch, ¡desearía que los documentos fueran tan completos!
Ravi Tiwari
-6
docker run -d -t ubuntu:14.04

docker run: crea una instancia a partir de la imagen de la ventana acoplable como contenedor de la ventana acoplable. (si la imagen no está disponible localmente, se extrae de Docker Hub) ubuntu - Nombre de la imagen

14.04 - Etiqueta

-d, --detach - Modo de desconexión

-t, --tty - Asignar un pseudo-TTY

Siddharth Kumar
fuente
13
Esta no es una respuesta a la pregunta.
0xc0de