tag run remove library hub example compose docker build dockerfile

run - ¿Cuál es el propósito del contexto de construcción de Docker?



docker tag example (1)

¿Cuál es el propósito del contexto de construcción de Docker? Entiendo, por la documentación, que es el punto de "entrada" desde el que se enviará todo el contenido al demonio de la ventana acoplable. Pero, ¿qué sentido tiene enviar el contenido completo del directorio actual, asumiendo el caso de uso predeterminado que se proporciona en los ejemplos, cuando también debemos incluir explícitamente una directiva COPY o ADD en el Dockerfile para incluir REALMENTE el contenido del directorio actual en la imagen generada? ? Si el contexto se envía al demonio para que se incluya en la imagen, entonces ¿por qué estamos obligados a realizar este paso adicional? ¿Por qué la tarea de carga / envío / copia comprimida no incluye los contenidos del directorio especificado de forma predeterminada?

Por ejemplo, dada esta estructura de directorios

-rw-r--r-- 1 me me 7 Jun 8 18:52 .dockerignore -rw-r--r-- 1 me me 1.1K Jun 9 12:42 Dockerfile drwxr-xr-x 13 me me 4.0K Jun 8 19:43 myproject

Cuando ejecuto este comando docker build -t user / myproject: 2.3.

Entonces esperaría ver un directorio myproject en algún lugar de la imagen generada. Pero, debo incluir

ADD myproject /

para que ese sea el caso.

Si el proceso de compilación comprime el contenido del directorio actual y lo envía al demonio, ¿a dónde va? ¿Por qué no hace que ese contenido esté disponible para su uso en la imagen?


TL; DR: "porque el cliente y el demonio ni siquiera pueden ejecutarse en la misma máquina"

El comando de la dockerd docker es el cliente de la dockerd que es el servicio que puede ejecutarse directamente en su PC (linux) o bajo una VM de Linux bajo OSX o Windows.

P: ¿Cuál es el propósito del contexto de construcción de Docker?

Desde here

Probablemente sería bueno mencionar también que esto debe suceder de esta manera porque el cliente y el daemon pueden no ejecutarse en la misma máquina, por lo que sin este "contexto", la máquina del daemon no tendría otra forma de obtener archivos para ADD o de otra manera

P: Si el proceso de compilación comprime el contenido del directorio actual y lo envía al demonio, ¿a dónde va?

El demonio docker recibe el directorio comprimido y lo procesa sobre la marcha; No importa dónde esté almacenado en ese momento.

P: ¿Por qué no hace que ese contenido esté disponible para su uso en la imagen?

Piense en esto: ¿cómo puede la ventana acoplable saber dónde desea colocar cada archivo / directorio en la imagen de destino? Con las directivas COPY/ADD puede controlar dónde colocar cada una. El caso que ha mencionado es solo un ejemplo trivial en el que solo tiene un directorio y un único destino.