Link Search Menu Expand Document

Creando un contenedor con un servidor web

Tenemos muchas imágenes en el registro público docker hub, por ejemplo podemos crear un servidor web con apache 2.4:

$ docker run -d --name my-apache-app -p 8080:80 httpd:2.4

Vemos que el contenedor se está ejecutando, además con la opción -p mapeamos un puerto del equipo donde tenemos instalado el docker, con un puerto del contenedor: Si accedemos a la ip del ordenador que tiene instalado docker al primer puerto indicado, se redigira la petición a la ip del contenedor al segundo puerto indicado. Nunca utilizamos directamente la ip del contenedor para acceder a él.

Para probarlo accede desde un navegador a la ip del servidor con docker (en mi caso: 192.168.121.54 y al puerto 8080:

web

Para acceder al log del contenedor podemos ejecutar:

$ docker logs my-apache-app

Con la opción logs -f seguimos visualizando los logs en tiempo real.

Modificación del contenido servidor por el servidor web

Si consultamos la documentación de la imagen httpd en el registro docker Hub, podemos determinar que le servidor web que se ejecuta en el contenedor guardar sus ficheros (directorio DocumentRoot) en /usr/local/apache2/htdocs/. Vamos a crear un nu nuevo fichero index.html en ese directorio.

Lo podemos hacer de varias formas:

  • Accediendo de forma interactiva al contenedor y haciendo la modificación:
$ docker exec -it my-apache-app bash

root@cf3cd01a4993:/usr/local/apache2# cd /usr/local/apache2/htdocs/
root@cf3cd01a4993:/usr/local/apache2/htdocs# echo "<h1>Curso Docker</h1>" > index.html
root@cf3cd01a4993:/usr/local/apache2/htdocs# exit
  • Ejecutando directamente el comando de creación del fichero index.html en el contenedor:
$ docker exec my-apache-app bash -c 'echo "<h1>Curso Docker</h1>" > /usr/local/apache2/htdocs/index.html'

Independientemente de cómo hayamos creado el fichero, podemos volver a acceder al servidor web y comprobar que efectivamente hemos cambiado el contenido del index.html:

web