‫Entonces, primero teníamos a Charles, quien publicó su área de archivos Docker,
‫y
‫déjame que levante la pantalla verde para que podamos, así que
‫veamos este archivo Docker.
‫Y, por supuesto, la realidad aquí es que una vez que llega a los archivos del mundo real, todo se vuelve más desordenado.
‫Correcto.
‫Todos aprendemos en cursos como los que tengo y aprendemos de artículos de blog y documentación y luego, una vez que llegamos al
‫mundo real, siempre parece ser más difícil que eso.
‫Así que siempre trato de agregar más de esa complejidad a los cursos, pero es mucho trabajo lograr eso en los
‫cursos porque tienes que hacerlo en su contexto.
‫Se trata mucho de su entorno y su configuración y su aplicación particular.
‫Así que pensé anoche. ¿Por qué no hablamos de esto en el programa mañana?
‫Entonces, si realmente te gusta, dale un visto bueno a esto.
‫Dígame en el chat o en los comentarios que le gustaría obtener más de estos y haremos
‫que esto sea algo normal, en realidad revisaremos más archivos Docker y compondremos archivos y sacaremos algunas de las gemas buenas allí.
‫Todo bien.
‫Entonces, el primero es Charles y parece que viene de su propia cuenta, tiene una imagen P HP Apache.
‫Basado en ese nombre, voy a asumir que eso es lo que es.
‫Y tiene una fecha y sabe que tiene una versión y una fecha en el nombre allí.
‫Entonces, eso es bastante común a medida que comienza a obtener su propia costumbre a partir de imágenes, comenzará a
‫hacer cosas como versionarlas o fecharlas o usar ideas de compromiso en ellas.
‫Y esa es una manera de garantizar que está utilizando exactamente la misma imagen.
‫Nuevamente, aquí no solo usas lo último en cualquier configuración de producción real, siempre puedes usar lo último para
‫jugar y probar.
‫Pero cuando vas a cosas reales, siempre querrás usar esas versiones reales.
‫Bueno, esa es la imagen de Azure HP que dice Charles.
‫Está bien.
‫Y luego tiene aquí una configuración interesante que no he visto antes y creo que sé por
‫qué lo estás haciendo.
‫Entonces, en esta línea de ejecución, está haciendo una aplicación para obtener actualizaciones y luego dice que si eso no es así, está dando
‫un OR en bash, lo que significa que si esto no tiene éxito, haga esto.
‫Y entonces lo estás repitiendo.
‫Así que supongo que puede ser que esté en una red o en algún lugar donde potencialmente tenga un problema común para tener
‫que tener problemas de actualización o tal vez haya tenido algunas peculiaridades en el pasado donde falló al
‫azar y si usted solo lo hice por segunda vez funcionaría.
‫Eso es lo que supongo que estás haciendo allí.
‫Y es una solución efectiva a ese problema si eso es lo que es para eso es para lo que sirve.
‫De lo contrario, normalmente no veo este tipo de configuración, esto normalmente no es lo que vería allí.
‫Todo bien.
‫A continuación, exporta y que es solo un pequeño cambio de metadatos.
‫Así que no va a tomar mucho Oh, mira lo que Charles
‫dice: sí, dice que es una imagen de HP tan feliz.
‫Y habló con el soporte Azure Azure y soluciona un error.
‫Muy bien,
‫voy
‫a cambiar eso, veamos, hagamos
‫esto cambiando las fuentes aquí, así que parece un poco más fácil, sí.
‫Un look mejor.
‫Sí.
‫Todo bien.
‫Así que aquí hay una cosa interesante.
‫Entonces estás descargando, estás haciendo algunas descargas y estás instalando un paquete que es normal.
‫Y también estás haciendo un montón de aplicaciones para instalar aquí.
‫Entonces, a menos que esto sea algo que esté probando y solo esté tratando de descubrir cómo funciona
‫este flujo de trabajo, hay muchas oportunidades para la optimización, especialmente cuando se trata de tamaño.
‫Y también tiene una situación aquí en la que podemos meternos en un poco de problemas.
‫Así que observe aquí que tenemos una línea de ejecución separada que está haciendo que la aplicación se actualice.
‫Entonces no tienes esa línea aquí donde estás haciendo toda la instalación.
‫Entonces has roto todos estos pasos.
‫Ahora, si comienzas a ir y miras las imágenes oficiales, notarás que nunca hacen esto.
‫Siempre lo ponen todo en una línea de carrera enorme y hay un par de razones para eso.
‫La razón más importante aquí es la ruptura de efectivo.
‫Entonces, cuando piensas cuando construyes una imagen, hay un efectivo detrás de ella.
‫Ahora, si está utilizando algo como Jenkins o un corredor CCD y ha deshabilitado el almacenamiento en
‫caché donde siempre se va a construir cada vez desde cero sin almacenamiento en caché, entonces este puede no ser ese problema ese tipo de problema,
‫pero ciertamente será un problema si construye localmente o construye en cualquier sistema
‫más de una vez.
‫Y esto es lo que sucederá en la línea de ejecución.
‫Digamos que está ahí.
‫OKAY.
‫Y nunca cambia.
‫Correcto.
‫Entonces, la primera vez que construyes esta imagen, todo está bien.
‫Digamos que construyes tres días después.
‫No va a almacenar en caché esta línea porque esta línea no cambió, recuerde, y en el
‫comando de compilación de Docker estándar, la captura de caché es cuando ha cambiado una línea.
‫Y cuando cambia esa línea, todo en esa línea se vuelve a ejecutar y cada línea después de ella.
‫Y lo que sucede aquí es si tienes esta línea de ejecución aquí y nunca cambia, pero luego agregas,
‫digamos otro paquete aquí abajo en la línea de ejecución o tal vez cambias las versiones y codificas las
‫versiones, lo que también deberías estar haciendo debería codificar las versiones de todas estas herramientas y
‫tal vez no comprimir, descomprimir y rizar.
‫Pero si su equipo de seguridad es estricto, esperarán que tenga versiones confiables y eso es otra cosa
‫que querría hacer aquí.
‫Pero volvamos a este punto.
‫Entonces, si va a hacer estas instalaciones y cambia una herramienta y la agrega aquí.
‫Piense en eso y obtenga la actualización que tenía que obtener, descarga un caché de todos los metadatos sobre
‫todos estos paquetes y luego los instalará más tarde y si la segunda línea
‫aquí se rompe al cambiar, se volverá a ejecutar.
‫Pero se ejecutará en función de ese antiguo caché de su aplicación para obtener actualizaciones.
‫Entonces, con el tiempo comenzará a experimentar problemas porque sus paquetes siempre instalarán esas versiones
‫antiguas, una forma mucho mejor de hacerlo es tomar todas sus aplicaciones para hacer las cosas bien.
‫Y eso no está necesariamente relacionado con la descarga de este paquete aquí.
‫Este es un paquete personalizado.
‫Hablaremos de eso un minuto.
‫Pero cuando se trata de estas líneas aquí, esta línea no tendrá ningún efecto
‫en el tamaño porque esta línea debe ejecutarse en la misma línea que esta o no funcionará.
‫Ahora todo esto tal vez no sea cierto.
‫Si tienes otro Ok, entonces no estás haciendo etapas múltiples.
‫Una forma de salirse con el problema del tamaño es hacer varios estados, pero no está haciendo lo que es el estado y
‫eso está bien.
‫No tiene que
‫hacer una etapa múltiple, así
‫que veamos, entonces, lo que sucederá aquí es que recomendaría tomar esto aquí, tomar todo
‫esto aquí y subirlo todo a esta línea.
‫Tomaría esta línea de exportación y la pondría arriba, así que simplemente la pondría aquí para que así esté
‫configurada.
‫Y nunca necesita cambiar.
‫Y no tiene que preocuparse por eso en medio de todo lo que está haciendo para hacer las cosas bien.
‫Y, en general, es bueno que tengas todo lo necesario para conseguir cosas cerca de la parte superior porque quieres esas dependencias, que generalmente demoran mucho
‫tiempo en instalarse, quieres que estén lo más arriba posible para que no tengas que
‫volver a ejecutarlas a menudo.
‫Pero lo que voy a recomendar es
‫que tome todas estas cosas aquí mismo y las coloque aquí ahora, puede hacer esto a continuación porque se trata de una descarga e instalación manual del paquete.
‫Entonces, cuando haces esto, hay
‫un par de cosas que puedes hacer.
‫Uno es este.
‫Esta línea aquí será una capa y esa capa siempre incluirá el archivo db, incluso si no lo
‫necesita.
‫Entonces, cuando limpia más tarde, no está limpiando estas capas anteriores.
‫Ese es uno de los problemas aquí es que es un archivo que se descarga en una capa y luego vas a la siguiente
‫línea, que es un comando Docker o el siguiente comando Docker. Debo decir que el siguiente comando Docker será una
‫nueva capa.
‫Piense en eso como algo separado una vez que detuvo una línea o un comando acoplable.
‫No puedes cambiar eso, no puedes retroceder en el tiempo y cambiar eso.
‫Entonces, la siguiente línea o comando y el archivo acoplable simplemente le agregarán cosas.
‫Ahora, si elimina archivos, solo los eliminará en esa capa.
‫Esencialmente pone algunos metadatos que dicen oye que el archivo ya no debería existir o parecer que existe, pero esos archivos seguirán
‫existiendo y las capas de solo lectura porque cada capa de arriba ahora
‫es de solo lectura y esa es la forma en que estas capas garantizan que son idénticos a lo que esperas.
‫Entonces ninguna capa puede retroceder en el tiempo.
‫Entonces, eso es lo que debe hacer es ver algunas de las imágenes predeterminadas de la ventana acoplable, así que veamos una de las mías porque será un
‫poco más, podría ser
‫un poco más fácil de entender.
‫Así que sí, no
‫estoy seguro.
‫OKAY.
‫Entonces, el archivo Docker sí, hay un AP Kay, pero notarás aquí que todo está en una línea que
‫es un mal ejemplo, pero hagamos un centro y veamos a Ghost.
‫Así que mira este archivo de Debian Docker.
‫Muy bien, aquí vamos.
‫Entonces notará que en esta situación está descargando algunas cosas, está lidiando con esas cosas y luego se está deshaciendo de
‫todas esas cosas en una sola línea de ejecución.
‫De esa manera, esos archivos nunca se quedan.
‫Una vez que esa capa está sellada y marcada como de solo lectura.
‫Y esa es la clave para mantener sus imágenes pequeñas.
‫Apuesto a que una vez que hagas esto eficiente y combines esto, estarás ahorrando cientos de megas y
‫el tamaño de tu imagen.
‫Muy bien, y lo otro aquí en este caso es que también agregaría eso a una sola línea y otra cosa que
‫haría allí es que tal vez no necesites w, tal vez puedas hacer un anuncio, un anuncio descargará automáticamente un
‫archivo de La Internet.
‫Y si tiene mucha curiosidad acerca de la diferencia en copia y publicidad, hoy en día nuestro estándar es
‫que la copia es solo para copiar archivos del repositorio en el que tiene razón.
‫Entonces, simplemente copiar archivos y el anuncio hace lo mismo, pero tendemos a querer solo usar el anuncio cuando estamos descargando algo
‫de Internet o lo que sea que estemos copiando y queremos que se descomprima o que el tar de la ONU y eso realmente va a razón
‫para usar el anuncio.
‫Pero el buen beneficio de usar un anuncio allí es que no necesitaría hacer lo que podría hacer, básicamente podría
‫usar médicos internos, iremos a buscar ese archivo y lo descargaremos, pero lo negativo de eso es que cuando hace esa línea y
‫luego va a la siguiente línea
‫Ese paquete seguirá existiendo.
‫Entonces, aunque los anuncios realmente son geniales en su caso porque está descargando un paquete que está bien
‫que van a instalar y luego ya no necesita ese paquete.
‫Tal vez solo pondría las tres líneas en una línea de esa manera, al final puede
‫eliminar ese punto D. SEGUNDO. archivo y ahorre espacio adicional en su evento final.
‫Entonces harías todo eso de una vez.
‫Todo bien.
‫Eso ayuda.
‫Parece que estás copiando en otros archivos geniales que estás usando copiar no agregar.
‫También estás haciendo algunos creadores y copias y certificados.
‫Así es exactamente como lo haría.
‫Puede hacer que esto sea más optimizado, puede poner todo esto en un solo comando
‫de ejecución, generalmente porque básicamente es un poco más rápido de construir, le dará quizás un segundo más rápido en
‫su factura porque cada una de estas líneas tiene que detenerse el contenedor o cree un
‫nuevo contenedor monte el resto de la imagen y ejecute ese comando, luego guárdelo en una nueva imagen de
‫contenedor y luego inicie un nuevo contenedor.
‫Correcto.
‫Por lo tanto, debe hacer mucho más trabajo que simplemente ejecutar tres comandos rápidos.
‫Entonces podría tener esos en uno.
‫No hay ahorro de espacio seguro ni nada allí, pero es solo una
‫cuestión de tres comandos que realmente se convertirían en un comando de shell largo y sí, sí, sí.
‫Tenemos las puertas.
‫Probablemente haría lo mismo para que sean solo por eficiencia.
‫Entonces, aquí está copiando en dos líneas de copia diferentes, puede hacer esa línea.
‫En realidad, podría decir copiar y luego la ruta a la CRT y luego la ruta a esa clave.
‫Kay Kay por qué y tener esos dos archivos y luego poner en la ruta al directorio SSL.
‫Entonces, siempre que ambos vayan al mismo directorio, puede tener varios archivos en la línea de
‫copia única que lo ayudarán a hacerlo un poco más fácil.
‫Menos líneas tiende a ser mejor siempre que no sean demasiado complicadas.
‫Sí.
‫Tienes algunas cosas estándar de Apache en configuraciones que también podrías tener.
‫No se cuanto.
‫Sí.
‫Estos son estos son en realidad estos son buenos.
‫Creo
‫que son buenos, sí, haga más copias de los archivos de configuración en algunos de estos, también podría considerar que estos son
‫archivos de configuración estándar, pero si necesita sobrescribirlos y está utilizando un orquestador, ya
‫sea cubano o enjambre, tenga en cuenta que puede usar esa configuración o en comunidades llamadas mapa de configuración,
‫puede usar la función de configuración y enjambre para montar estos archivos en tiempo de ejecución de modo que
‫no esté codificando ninguna configuración.
‫Idealmente, no está codificando SSL en su imagen, ya sea realmente si tiene SSL personalizado, ya que
‫desea almacenarlo en su orquestador o en Docker y montarlos y cuando lo ejecuta, porque idealmente no
‫debería haber nada secreto en una imagen cuando la guardas.
‫Espero que va a hacer lo mismo aquí, ya que podría combinar estos dos en una línea, podría combinar algunos de
‫estos en una línea, probablemente podría saber si se trata de todos los archivos pequeños x ese directorio
‫que podría copiar. la cantidad de X del punto del asterisco del directorio y luego
‫podría copiar los cuatro allí, sus pros y sus contras, porque si aparece un
‫archivo X extra de Excel, podría copiarse accidentalmente, pero solo depende de cuán detallado desee ser y cómo desea línea literal
‫para líneas tipo de cosas en lugar de mantener el archivo más oscuro pequeño y simple.
‫Todo bien.
‫Y luego tienes otra copia, ejecuta tu cambio en el directorio de trabajo y luego tienes tu punto
‫de entrada.
‫Ahora típicamente para que no tengas un CRM D.
‫Entonces, supongo que está utilizando el CRM D de esta imagen raíz y eso está totalmente bien.
‫No hay nada realmente malo en eso.
‫Sin embargo, uno de los desafíos que tengo con eso es que las personas que usan mis imágenes si tengo un equipo
‫de personas no sabrán cómo ir a verlas D.
‫Así que tiendo a repetir el CMT a pesar de que es innecesario aquí abajo en la parte inferior porque van a obtener esto y una especie de
‫repositorio y lo verán y si no son muy inteligentes en Docker, están no me voy a dar cuenta Oh,
‫tengo que ir a buscar ese archivo Docker para el.
‫De ahí proviene o usa el historial y regresa y mira el historial y la hora para encontrar esa
‫CMT.
‫Entonces, incluso podría incluirlo en un comentario para ayudar a las personas que tal vez estén mirando este archivo
‫Docker, pero tiendo a encontrarlo porque el punto de entrada en el CMT es tan importante para
‫lo que hace esta imagen de Docker que tiendo a agregue esos n aunque pueda ser repetitivo a una imagen anterior.
‫Una vez más, todo eso son solo metadatos, por lo que realmente no agrega tiempo real o hinchazón a su compilación en lugar de los otros cambios de
‫archivos y los comandos de ejecución que usted hace.
‫Pero aparte de eso, parece un archivo Docker de gran calidad y buena calidad en el que
‫ha pasado mucho tiempo, pero creo que definitivamente en general podría combinar muchos de esos y obtener
‫cosas para ahorrar mucho espacio en su imagen y mucho de hinchazón y también evite el problema de actualización de tener una actualización anterior
‫que básicamente es una aplicación antigua para obtener efectivo cuando intenta instalar cosas nuevas.
‫Recomendaría la versión de estos y, básicamente, dentro de este comando de instalación, puede especificar la
‫versión de cada una, quizás algunas de estas herramientas realmente no importan, pero cuando comienza a acceder
‫a las bibliotecas que necesita.
‫Para Apache para su aplicación real, estas son solo más utilidades para administrarlo, no realmente cosas que usaría
‫en una aplicación en ejecución de producción.
‫Correcto.
‫Pero este Apache en vivo aquí, definitivamente, versión que me ha mordido este error
‫y HP porque un mongo D. SEGUNDO. El controlador y HP cambiaron las versiones dentro de mi imagen
‫y se rompió, tenía un error y se rompieron mis aplicaciones de producción porque no lo anclé en el archivo acoplable y básicamente
‫fui a producción. Solo un día reconstruí la imagen. funcionó bien en mi máquina porque mi máquina tenía una versión diferente porque
‫no hay, dice que no hay versiones allí, básicamente, obtienes la versión más
‫nueva cuando construiste la imagen, por lo que es una especie de esperanza aleatoria que obtengas una buena versión eso
‫funciona.
‫Así que definitivamente obtienes un pin que yo personalmente los fijaría a todos y los actualizo una vez al mes o
‫algo o lo que requiera tu equipo de seguridad.
‫Pero ese es un gran archivo Docker.
‫Muchas gracias.
‫Por supuesto, siempre hay margen de mejora y me alegro de que haya aparecido para ayudar con eso.