Hola mundo en Docker

2019-10-06 Docker
Tags   Docker 18

Personalmente no me gusta mucho el hola mundo de docker visto en el anterior post, creo que puede resultar algo confuso para una persona que recién inicia en docker. Por esto, el día de hoy veremos un Hola Mundo un poco diferente pero que representa un poco maś la escencia de docker.

Crear el Dockerfile

Todo contenedor en docker se inicia con un Dockerfile el cual define qué sucede dentro del entorno del contenedor. Debes crear una carpeta para este proyecto y dentro de esta carpeta debes crear el archivo Dockerfile y pegar el siguiente contenido en él.

FROM httpd:2.4

COPY ./html/ /usr/local/apache2/htdocs/

Como puedes ver es extremadamente sencillo, la primera línea de este archivo nos dice que el contenedor será una instancia de la imagen httpd:2.4, la cuál viene con apache instalado. La tercera línea realiza un copiado de todo lo que tengamos en la carpeta html a /usr/local/apache2/htdocs. Para que esto funcione de manera correcta también deberás crear la carpeta html dento del directorio del proyecto. Finalmente nuestro hola mundo irá en el archivo index.html dentro de esta última carpeta.

mkdir html
echo "<h2>Hola mundo</h2>" > html/index.html

Crear la imagen

Necesitamos crear nuestra propia imagen que estará basada por supuesto en httpd tal y como lo especifíca nuestro Dockerfile. Para esto debemos ejecutar el siguiente comando:

docker build --tag=holamundo

El parámetro en --tag hace referencia al nombre con el cual se creará nuestra imagen.

Correr una instancia

Lo último que resta es correr una instancia de nuestra imagen, es decir, crear un contenedor. Para esto, vamos a mapear el puerto 80 del contendor hacia el 8080 de nuestro equipo.

docker run -p 8080:80 holamundo

Si todo ha salido bien podríamos acceder a la URL http://0.0.0.0:8080/ y ver como resultado un Hola mundo en el navegador.

Para finalizar, te dejo estos dos comandos básicos de docker que te ayudarán a saber qué imagenes y contenedores existen en tu host.

$ docker image ls
REPOSITORY    TAG       IMAGE ID        CREATED           SIZE
holamundo     latest    eb11397e547a    30 minutes ago    154MB
$ docker container ls
CONTAINER ID   IMAGE       COMMAND              CREATED           STATUS           PORTS                  NAMES
f54c000c919d   holamundo   "httpd-foreground"   33 minutes ago    Up 33 minutes    0.0.0.0:8081->80/tcp   hardcore_lamport

Hasta la próxima!.

Acerca de Darío Rivera

Author

Ingeniero de desarrollo en PlacetoPay , Medellín. Darío ha trabajado por más de 6 años en lenguajes de programación web especialmente en PHP. Creador del microframework DronePHP basado en Zend y Laravel.

Sólo aquellos que han alcanzado el éxito saben que siempre estuvo a un paso del momento en que pensaron renunciar.