¿Cómo usar un archivo .dockerignore?

Si es un desarrollador de Docker, es posible que haya notado que cuando crea una imagen de Docker, ya sea utilizando un archivo docker o extrayendo directamente una imagen del registro de Docker, el tamaño de la imagen puede ser considerablemente grande según su contexto de compilación de Docker.

Dado que Docker es una aplicación cliente-servidor, sabemos que Docker Client es la interfaz de línea de comandos real que usamos para acceder a Docker Containers y Docker Server en realidad se llama Docker Daemon, que lo ayuda a mantener los contenedores. Cuando intentamos construir una imagen de Docker, necesitamos enviar algunos archivos al Daemon de Docker o al servidor para que esos archivos puedan usarse e incluirse dentro del contenedor de Docker que estamos tratando de construir. Este conjunto de archivos y directorios se denomina Docker Build Context. 

Es obvio que cuanto mayor sea el tamaño de los archivos y carpetas dentro del contexto de compilación de Docker, mayor será el tamaño de la imagen de Docker. Ahora, dentro de la carpeta donde guarda su dockerfile y a través de la cual intenta construir la imagen, es posible que contenga algunos archivos y carpetas que son parte del proyecto y no desea incluir esos archivos en Docker Build. Contexto. Veamos algunas razones para no incluir estos archivos y directorios.

  • Problemas de seguridad : algunos archivos importantes, como contraseñas, claves secretas, carpetas .git, etc., contienen mucha información sobre su proyecto y es posible que desee exponer esos detalles al mundo exterior para evitar intrusiones.
  • Invalidación de caché : cuando escribe el Dockerfile , es una práctica general usar la instrucción COPY para copiar los archivos y las carpetas dentro del contexto de compilación de Docker. Cada declaración dentro del Dockerfile da como resultado la creación de una nueva capa de imagen intermedia. Por lo tanto, cuando realiza cambios en su dockerfile una y otra vez, esto puede conducir a múltiples invalidaciones de caché y al desperdicio de recursos.
  • Además, excluir archivos grandes innecesarios de su Docker Build Context conducirá a un tamaño de imagen de Docker más bajo.
  • Acelera el proceso de creación de la imagen de Docker.

Por todos estos motivos, es posible que desee excluir algunos archivos y carpetas de su contexto de compilación de Docker.

Ahora, de manera similar a un archivo .gitignore que se usa comúnmente cuando crea repositorios de Git, un archivo .dockerignore se usa para ignorar archivos y carpetas cuando intenta crear una imagen de Docker. Puede especificar la lista de archivos y directorios dentro del archivo .dockerignore

Veamos un ejemplo de archivo .dockerignore .

passphrase.txt
logs/
.git
*.md
.cache

Echemos un vistazo a un ejemplo práctico del uso de un archivo .dockerignore.

Paso 1: Cree un directorio que contenga un dockerfile donde especifique las instrucciones y una carpeta que desea ignorar (diga ignore-this).

En este caso, el dockerfile simplemente extrae la imagen de Ubuntu del repositorio y copia el contexto de compilación.

FROM ubuntu:latest
COPY . .

Paso 2: dentro del mismo directorio, cree un archivo .dockerignore e incluya el nombre de la carpeta que desea excluir del Docker Build Context.

ignore-this

Ahora, el directorio principal contiene un dockerfile , un archivo . dockerignore file y una carpeta llamada ignore-this.

Directory structure

Estructura de directorios

Paso 3: Cree la imagen de Docker.

sudo docker build -t sample-image .
Building the Docker Image

Creación de la imagen de Docker

Paso 4: Ejecute Docker Container y verifique la carpeta.

sudo docker run -it sample-image bash
ls
Running the Container

Ejecutar el contenedor

Encontrará que el Contenedor solo contiene el archivo acoplable y no la carpeta «ignorar esto». No es que tampoco contenga el archivo .dockerignore.

¿Qué pasa si ignoras el dockerfile?

Es cierto que también puede mencionar el dockerfile dentro del archivo .dockerignore y excluirlo del contexto de compilación de Docker. De hecho, es una práctica común de lo que podrías haber pensado. Esto le permite no exponer todo el proyecto de su aplicación Docker.

Publicación traducida automáticamente

Artículo escrito por iamrj846 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *