Docker: Dockerfile intro

View this thread on: d.buzz | hive.blog | peakd.com | ecency.com
·@arkangelb·
0.000 HBD
Docker: Dockerfile intro
<html>
<p><br></p>
<center><img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSuNq4uJpqhY1nKIzMY6iqpAFlSAQ86WFxGbB4fso5sUwFKd_8G2g" width="223" height="226"/></center>
<center>Imagen tomada de <a href="https://runnable.com/docs/">runnable</a></center>
<p><br></p>
<h1>Dockerfile</h1>
<p>Se define como un documento de texto que contiene todos los comandos que un usuario puede llamar en CLI para generar una imagen. Utilizando el comando <em><strong>docker build</strong></em> los usuarios pueden construir automáticamente varias instrucciones que se ejecuten sucesivamente en la linea de comandos.</p>
<p>Para definir un pequeño ejemplo:</p>
<pre><code>FROM busybox
RUN echo "Hola"</code></pre>
<p>Tal cual dije es un pequeño ejemplo, aqui suceden algunas cosas veamos:</p>
<ul>
  <li>Primero Docker analiza si ya se cuenta con la imagen elegida (busybox)
    <ul>
      <li>si no cuenta con la imagen se conecta con el server y la descarga</li>
      <li>De contar con esta imagen ya de manera local entonces solo se procede a seleccionarla y usarla.</li>
    </ul>
  </li>
  <li>El segundo comando <strong>RUN</strong> solo ejecuta el mensaje de <em>Hola</em> en consola</li>
</ul>
<p>Como ejecutar dockerfile: #docker build -t nombre:version . &nbsp;&nbsp;&nbsp;&nbsp;(el punto del final es 100% necesari0)</p>
<p>Ahora veamos algo un poco mas avanzado y aparte con el uso de uno de los mejores lenguajes de programación <strong>Golang</strong></p>
<pre><code>FROM scratch &nbsp;
ADD . /app/ &nbsp;
WORKDIR /app &nbsp;
EXPOSE 8080 
CMD ["./main"]&nbsp;</code></pre>
<p>Veamos lo que pasa en el ejemplo anterio:</p>
<ul>
  <li>En la primera linea se manda llamar un comando <strong>FROM scratch </strong>recordemos que aqui es donde se manda llamar la imagen del servidor de Docker pero estamos haciendo uso de la imagen mas pequeña que existe en docker llamada<strong> scratch.</strong></li>
  <li>El segundo comando lo que hace es una copia de todo el directorio actual a una carpeta llamada <strong>app</strong> dentro de la imagen</li>
  <li><strong>WORKDIR</strong> define que es la carpeta sobre la cual la imagen va a iniciar, es decir, cuando se genere un contenedor de esta imagen estan en la carpeta <strong>app</strong>.</li>
  <li><strong>EXPOSE</strong> se utiliza para "exponer", es decir, &nbsp;permitir la comunicacion del contenedor creado sea mediante el puerto <strong>8080</strong>, ya que este ejemplo contiene una pagina web.</li>
  <li><strong>CMD</strong> este comando funciona muy parecido a como lo hace el comando <strong>RUN</strong> la diferencia entre ellos es que <strong>CMD</strong> solo puede suceder una vez y si existe mas de una solo se tomara en cuenta la ultima en el archivo Dockerfile. Entonces este comando se encarga de ejecutar un programa (como lo es en este caso).</li>
</ul>
<p>Como ejecutar dockerfile: #<a href="https://docs.docker.com/engine/reference/commandline/build/">docker build</a> -p 8080:8080 -t nombre:version .</p>
<p><em>*Como extra les dejo como crear ejecutable de programa hecho en Golang para que no requieras que este instalado Go en el SO: &nbsp;CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .&nbsp;</em></p>
<p>Espero les ayude in poco a iniciar en el mundo de Docker, son libres de dejar que les gustaría saber o si les gustaría saber mas sobre alguno de los puntos vistos. Les dejo el enlace de mi <a href="https://steemit.com/docker/@arkangelb/docker-basico">post anterior</a> por si quien leer un poco mas de las bases de Docker.</p>
<p>Aquí puedes encontrar <a href="https://docs.docker.com/edge/engine/reference/commandline/docker/">documentación oficial</a> de Docker para CLI.</p>
<p>Les agradeceré sus votos y comentarios, Saludos.&nbsp;</p>
<p><em>Now go and code around!</em>&nbsp;</p>
</html>
👍 , , , , , , , , , ,