El 14 de septiembre de 2017, publicamos una versión revisada de nuestra Política de privacidad. Tu uso continuado de video2brain.com significa que aceptas este documento revisado, por lo que te recomendamos que dediques unos minutos a leerlo y comprenderlo.

Docker esencial

Usar un fichero Dockerignore

Prueba ahora LinkedIn Learning sin cargo y sin compromiso.

Prueba gratis Mostrar modalidades de suscripción
Al igual que cuando tenemos un repositorio Git, tenemos la opción de agregar un fichero especial a la carpeta en la que tenemos nuestro Dockerfile para que ignore todos los ficheros que no nos son necesarios para la compilación o creación del contenedor. Esto nos puede ahorrar tiempo en la generación de contenedores y, aparte, salvarnos de algún susto.

Transcripción

Probablemente estéis acostumbrados a utilizar repositorios Git y, por lo tanto, estéis acostumbrados a ver un fichero llamado ".gitignore". Veamos uno. La función de un fichero ".gitignore" es evitar que ficheros no deseados acaben en un repositorio. Ya bien porque son cachés, porque son descargas, ficheros temporales de la compilación de un proyecto, o incluso porque tenemos secretos, contraseñas, etc. en la carpeta que no queremos que acaben en un repositorio público por error. Este en concreto que estamos viendo es de un proyecto Python. Por lo tanto, todas las rutas que vienen son específicas para Python. Por lo tanto, ¿qué es ".dockerignore"? ".dockerignore" es muy parecido a un ".gitignore" y lo que nos permite es evitar que determinados ficheros que tenemos en la ruta del proyecto acaben, tanto en el espacio de trabajo de Docker como en el contenedor o imagen que estamos creando. Vamos a imaginar este proyecto. Creemos que tiene unas carpetas adicionales de "caché" y "downloads". Puede ser que tengáis carpetas, ficheros, contenido, que aunque sea parte de vuestro entorno de desarrollo, bien porque estáis trabajando con él, o estáis editando al mismo tiempo que probáis contenedores, porque son descargas temporales de la compilación o por lo que sea, que no queráis que suban a Docker. Aquí, por ejemplo, veis que tengo 900 y pico ficheros que no son necesarios, e incluso tengo en descargas... ... un fichero enorme de 630 megas. Si yo ahora compilo esta imagen, por defecto, lo que hace Docker es mover primero, todos los archivos que hay dentro de la carpeta desde la que estoy compilando Docker al espacio de trabajo. Mueve todos los ficheros ahí y a partir de ahí empieza a ejecutar las acciones de nuestro Dockerfile. Aparte de eso, en lo que ocuparemos bastante espacio, porque tenemos muchos ficheros temporales, a veces es bastante común que agreguemos la carpeta entera a nuestro contenedor porque queremos agregar todo el código fuente. ¿Qué ocurre? Que si ejecutamos la compilación de este proyecto, será lentísima. De hecho, vamos a tener que acelerarlo. Veamos lo que pasa. Vemos un total de 18.6 segundos para compilar esta imagen. Obviamente, está agregando muchísimo contenido que no es necesario. Y por lo tanto, también se va a reflejar en el tamaño de la imagen. Vemos que es una imagen que pesa casi 780 megas, cuando apenas debería rondar por los 100 y pico, si no recuerdo mal. ¿Qué es lo que tenemos que hacer entonces? Crear un ".dockerignore". ".dockerignore" tiene unas características muy parecidas a ".gitignore". Admite comentarios, poniendo una almohadilla delante. Y, digamos, la sintaxis sencilla que podéis utilizar es: primero, literales de ficheros o carpetas que no queréis que se agreguen, que sería en este caso la carpeta "caché" o la carpeta "downloads", que quiero evitar, lo cual evitará esas dos carpetas completas. Después podemos realizar las siguientes sustituciones que son: el asterisco para cualquier contenido y la interrogación para un único carácter, es decir, si yo pusiera "temp?", sería todos los ficheros que empezaran por "temp" y siguieran con una letra o un número, o "*/temp" sería todas las carpetas o ficheros que se llamaran "temp" y que estuvieran dentro de un nivel de carpeta solo. Si quisiéramos algunas que estuvieran más altas todavía, a dos niveles de carpetas, sería así... Y si quisiéramos todas las carpetas o ficheros "temp" que estuvieran en cualquier nivel de carpetas, podríamos utilizar "**/temp". Este es un formato de "file match" de Go que si vais a la documentación de ".dockerignore" de Docker, habrá un enlace que encontraréis de cómo funciona el "Match" de Go para los ficheros. Aquí veréis todos los parámetros que podéis seleccionar para hacer "Match" de este ".dockerignore" con los ficheros que queréis evitar. En este caso, para mí es suficiente con "caché" y "downloads". Guardamos. Y ahora volvemos a compilar la imagen. Vamos a borrar primero... ... la imagen que habíamos creado antes. Volvemos a compilar y vemos cuánto tarda. Hemos pasado de 18 segundos a 1.6, porque hemos evitado, en todo el contexto de compilación, agregar los ficheros que teníamos, nos hemos evitado 600 megas en el contexto de compilación y además, al agregar todos los ficheros del código fuente a lo que es el contenedor o imagen que estamos realizando, hemos evitado todos esos ficheros temporales que no nos interesaban. Primero, que nos ocupan espacio. Segundo, que hacen que tardemos más en compilar la imagen y que no tienen por qué estar ahí, incluso porque puedan contener información sensible. Ahora, como vemos, de casi 800 megas que teníamos antes hemos pasado a 100 megas de imagen. Como veis, por velocidad, por rendimiento y por espacio, es muy interesante que tengáis en cuenta el ".dockerignore".

Docker esencial

Descubre lo que te ofrece Docker y aprende a empaquetar aplicaciones junto con todas sus dependencias en un contenedor virtual que podrás ejecutar desde cualquier servidor Linux.

2:18 horas (36 Videos)
Actualmente no hay comentarios.
 
Software:
Fecha de publicación:26/04/2017

Este curso video2brain está disponible como descarga y para ser visualizado online. ¡Pero no hace falta que decidas entre las dos opciones! Al comprar el curso, disfrutarás de ambas posibilidades.

La descarga te permite ver las lecciones sin estar conectado/a a internet y supone una navegación fácil y ágil entre capítulo y capítulo. Si vas a trabajar en diferentes ordenadores o si no quieres descargarte el curso completo, entra en la web con tus datos de acceso y disfruta directamente de tus vídeos online. Te deseamos que disfrutes de este curso y te resulte de mucha utilidad.

Estamos a tu disposición si tienes cualquier tipo de duda o pregunta.