Docker File vs Docker Compose: ¿Cuál es la diferencia?

¿Cómo va eso? aquí Kiko. Os traigo un nuevo post sobre el sistema operativo mas molón. Un placer linuxeros.

He visto a mucha gente confundir entre un Dockerfile y un archivo Compose. Esto se debe principalmente a que ambos se utilizan para modificar una imagen de Docker de alguna manera, aunque esto no es técnicamente correcto.

Es fácil confundir los dos términos, pero también debe comprender la diferencia al hablar con un colega o con su empleador (potencial).

Dockerfile es lo que se usa para crear una imagen de un contenedor, y Compose file es lo que se usa para colocar una instancia de esa imagen como contenedor.

Permítanme entrar en un pequeño detalle para comprender correctamente la diferencia entre Docker Compose y Archivo Docker.

¿Qué es Dockerfile?

Me gusta llamar a Dockerfile el predecesor de una imagen de contenedor. Cree una imagen a partir de Dockerfile. Un Dockerfile típico contiene instrucciones de compilación especiales, comandos como RUN,, ADD,, COPY,, ENTRYPOINTetc.

Tome el siguiente ejemplo:

FROM alpine:latest

RUN apk add --no-cache fortune

ENTRYPOINT ["fortune"]

Cada línea comienza con una instrucción para un componente de construcción. Estas instrucciones no tienen que estar en mayúsculas. Lo siguiente es tan válido como el anterior.

from alpine:latest

run apk add --no-cache fortune

entrypoint ["fortune"]

Desde este Dockerfile, ahora puede crear una imagen de contenedor (o una imagen de la ventana acoplable). La imagen es simplemente una plantilla para contenedores de trabajo, que consta de varias capas de solo lectura. Dado que este no es un artículo sobre imágenes de contenedores, me abstendré de exagerar este tema.

Para crear una imagen a partir de este Dockerfile utilizando la CLI de la ventana acoplable, ejecute el siguiente comando

docker build -t fortune:alpine .

Esto creará una imagen etiquetada fortune:alpine. Todavía no crearé un contenedor a partir de esta imagen, esto es para la siguiente sección.

¿Qué es un archivo de redacción?

Los archivos de compilación se utilizan en dos tipos de ubicaciones: en la implementación no agrupada con docker-compose y la implementación de un clúster con docker swarm.

Para distinguir los dos tipos, miraré el archivo compilado responsable de la ubicación del clúster como archivos de pila. Hablaré de los archivos de pila en un momento.

Los archivos de compilación son parte de una herramienta llamada docker-compose. Esta es una aplicación cliente para el servidor demonio de Docker, algo así como docker Cliente CLI, pero en lugar de ingresar el run comandos cada vez, con docker-compose puede reutilizar el mismo archivo YAML una y otra vez y colocar el mismo contenedor con la misma configuración que la primera vez.

Es más legible, más comprensivo, más intuitivo. Un solo archivo de construcción puede contener múltiples configuraciones de contenedor.

La compatibilidad con archivos de compilación formará parte del cliente de la ventana acoplable predeterminado, que está escrito en Go como un argumento de línea de comandos, «compilación de la ventana acoplable». Observe el guión que falta allí. Todavía es experimental, por lo que la versión de Python se usa en la producción, es decir. todavía se recomienda docker-compose.

Tomemos la imagen anterior y coloquemos una instancia de ella usando un archivo compuesto.

version: "3.3"

services:
    fortune:
        image: "fortune:alpine"

Guarde el archivo como docker-compose.yml. Ahora ejecute el siguiente comando en el mismo directorio

docker-compose up

No tú deber guardar el archivo como docker-compose.yml, puede guardarlo como desee, pero si no docker-compose.yml o docker-compose.yaml, asegúrate de usar -f [FILENAME] opción.

docker-compose -f docker-compose.yml up

Espera y mira lo que ocurre.

Saber qué fortune Bueno, lee este artículo sobre comandos divertidos en linux.

12 divertidos comandos de Linux para darle vida a tu terminal

Aquí hay algunos comandos divertidos e inofensivos de Linux para entretener a sus colegas y amigos. Pueden parecer inútiles, pero siguen siendo divertidos.

¿Qué es un archivo de pila?

Los archivos de pila son idénticos a los archivos de composición con una sintaxis similar y la mayoría de las opciones internas, con algunas excepciones. Los archivos de pila se utilizan para colocar pilas de servicios en un enjambre grupo.

Puede reutilizar el archivo de redacción anterior directamente como un archivo de pila.

Primero inicialice el clúster.

docker swarm init

Luego ejecute un comando similar al siguiente

docker stack deploy -c docker-compose.yml fortune

Si está ubicado de esta manera, debe verificar la salida revisando los archivos de registro del servicio usando docker service logs ....

Resumiendo

Los archivos Dockerfiles y Compose tienen diferentes propósitos. Si pudiera construir una línea de tiempo, se vería así

Dockerfile -> Docker Image -> Compose File -> Running Containers

Hay otra razón para que los principiantes confundan estos dos archivos. El Dockerfile se puede especificar a través del archivo Compose y luego puede usar docker-compose para construir la imagen.

Por ejemplo, puede sobrescribir el archivo de composición anterior como este

version: "3.3"

services:
    fortune:
        build:
            context: '.'
            dockerfile: "./Dockerfile"
        image: "fortune:alpine"

Ahora puedes correr docker-compose build para construir la imagen. O también puedes correr docker-compose up --build para construir y ejecutar el contenedor a la vez.

Aquí, Dockerfile se pasa a través del archivo compuesto y, a primera vista, puede parecer que el archivo compuesto es responsable de construir la imagen, pero este no es el caso.

Docker Run vs Start vs Create: se explica la diferencia

Para los usuarios principiantes, términos como iniciar una ventana acoplable, iniciar una ventana acoplable y crear una ventana acoplable pueden resultar confusos. Este artículo explica la diferencia con ejemplos.

Espero que este artículo aclare la diferencia entre un Dockerfile y un archivo Compose. Si tiene alguna pregunta, hágamelo saber en la sección de comentarios a continuación.

El Blog lo hacemos para ayudar y servir de ayuda a la gente Linux. Esperamos que os guste.

Give a Comment