Docker: Capas

View this thread on: d.buzz | hive.blog | peakd.com | ecency.com
·@arkangelb·
0.000 HBD
Docker: Capas
<html>
<p><center><img src="https://www.yabage.me/images/post/09-first-look-docker/docker-image-creation-03.png" width="585" height="413"/></center></p>
<p><br></p>
<p>Uno de los errores que usualmente cometemos sobre todo como principiantes es que creamos images muy grandes lo cual nos lleva a crear también contenedores grandes ya que estas son la base por lo cual el día de hoy hablaremos de como no cometer esta equivocación y si ya lo estamos haciendo como repararlo de igual manera tomando en cuenta unos tips de iniciarnos en este camino de Docker.</p>
<p>Lo primero a tomar en cuenta &nbsp;es el hacer uso de <strong>pocas capas</strong> en la creación de una imagen, en este post nos concentraremos en este y al final les dejare un par mas de tips a tomar consideración, a mi parecer esta es una de las principales causas que son provocadas por nuestra causa, veamos...</p>
<p>Este es un Dockerfile que tiene un detalle, intente encontrar cual es el error antes de continuar con el post de cualquier manera debajo estaremos hablando de esto</p>
<pre><code>&nbsp;FROM ubuntu
 RUN apt-get update -y 
 RUN apt-get install -y curl 
 RUN apt-get install -y postgresql 
 RUN apt-get install -y postgresql-client
 RUN rm -rf /var/lib/apt/lists/*
 CMD bash&nbsp;</code></pre>
<p>Espero lo hallan analizado un poco si se fija en la estructura de este dockerfile no tiene nada extraño o inusual pero que es lo que sucede cuando corremos este archivo que llamaremos Dockerfile.malo.</p>
<pre><code>docker -f Dockerfile.malo -t malapractica .</code></pre>
<p><center><img src="https://image.ibb.co/gVcD8c/Screen_Shot_2018_04_27_at_13_57_00.png" width="608" height="710"/></center></p>
<p>Pongan atención a el numero de pasos: 1/7, 2/7, 3/7 .... y así se va hasta que termina pero que es lo que provoca es la creación de muchas mas capas innecesarias en nuestra imagen veamos cuantas se crearon ejecutando el comando <strong>docker inspect container_id</strong></p>
<p><center><img src="https://image.ibb.co/e6BjEH/Screen_Shot_2018_04_27_at_14_02_19.png" width="525" height="211"/></center></p>
<p>Se pueden ver 10 capaz creadas al ejecutarlo de esta manera, pero entonces de que otra manera es posible ejecutarse, estos son los cambios realizados espero su ojo entrenado los vea o si no después de la imagen hablaremos al respecto.</p>
<pre><code>&nbsp;FROM ubuntu 
 RUN apt-get update -y \ 
 &amp;&amp; apt-get install -y curl \ 
 &amp;&amp; apt-get install -y postgresql \ 
 &amp;&amp; apt-get install -y postgresql-client \ 
 &amp;&amp; rm -rf /var/lib/apt/lists/* 
 CMD bash&nbsp;</code></pre>
<p><center><img src="https://image.ibb.co/dZhfoc/Screen_Shot_2018_04_27_at_13_59_59.png" width="1002" height="698"/></center></p>
<p>Notaron la diferencia en el paso 2 &nbsp;de este dockerfile (el segundo) que nombramos Dockerfile.buena dense un par de minutos para analizar, pero bueno entonces en capas cual es la diferencia pensaran veámoslo directamente de nuevo corremos <em>inspect</em> &nbsp;y contemos las capas.</p>
<p><center><img src="https://image.ibb.co/nKE4EH/Screen_Shot_2018_04_27_at_14_01_48.png" width="516" height="156"/></center></p>
<p>Como se puede ver aquí se encuentra 4 capaz menos que las que se tenían anteriormente en el primera imagen que creamos con <strong>Dockerfile.mala </strong>, pero veamos directamente ya en MB cual fue la diferencia de hacer uso de uno y otra sera mucha sera poca:</p>
<p><center><img src="https://image.ibb.co/ivG6Tc/Screen_Shot_2018_04_27_at_14_00_23.png" width="833" height="108"/></center></p>
<p>Solo por los pequeños ajuste de no crear un <strong>RUN</strong> por <strong>apt-get</strong> conseguimos reducir el tamaño de nuestra imagen 43 MB no se si o crean ustedes pero para mi me parece una gran diferencia, si lo calculamos en <em>floppys </em>estaríamos hablando que se ocuparían 30 para almacenar la diferencia, ok eso solo fue un broma ya nadie usa floppys de 3.5 jajaja.</p>
<p>Bueno después de la broma de viejo, les comento un tip que deben de tomar en cuenta también para el tamaño de sus imágenes:</p>
<ul>
  <li>Analicen bien cual sera su imagen base en mi caso y para este ejemplo yo utilice Ubuntu la cuales muy buena pero también es muy pesada existe distribuciones pequeñas como Busybox, Alpine o la mas pequeña de todas Scratch revísenlo es su tarea!</li>
</ul>
<p>Saludos.</p>
<p><em>now go and code around!</em></p>
</html>
👍 , , , , , , , , , , , ,