Cómo configurar un servidor web Apache simple en un contenedor Docker


Si es un administrador de sistemas Linux que brinda asistencia a los desarrolladores, es probable que haya oído hablar de Docker. De lo contrario, esta solución de software le facilitará la vida a partir de hoy al ayudarlo a reducir los costos operativos y acelerar las implementaciones, entre otros beneficios.

Pero no es magia. Docker como plataforma aprovecha los contenedores: paquetes de una aplicación junto con todas las herramientas que necesita ejecutar para eliminar las diferencias entre entornos.

En otras palabras, el software en contenedores funcionará y se puede administrar de manera uniforme independientemente de dónde esté instalado. Además, los contenedores son mucho más fáciles de configurar, iniciar, detener y mantener que las viejas máquinas virtuales. Si está interesado en conocer más sobre las diferencias entre estas dos tecnologías, el sitio web oficial de Docker ofrece una gran explicación.

Para ilustrarlo, en este artículo explicaremos cómo instalar Docker en CentOS 7 y Ubuntu 16.04, y cómo poner en marcha un contenedor Apache 2.4 desde Docker Hub.

Luego lo usaremos para servir una página web simple desde nuestro directorio de inicio, todo sin la necesidad de instalar un servidor web en nuestro host.

Instalación de Docker en CentOS y Ubuntu

Para comenzar, instalemos Docker usando el siguiente comando. Esto descargará y ejecutará un script de shell que agregará el repositorio de Docker a nuestro sistema e instalará el paquete.

# curl -fsSL https://get.docker.com | sh

A continuación, use el comando systemctl para iniciar el servicio principal de Docker y verifique su estado.

# systemctl start docker
# systemctl status docker

En este punto, simplemente podemos ejecutar.

# docker

para ver la lista de comandos disponibles o para obtener ayuda.

# docker COMMAND --help
# docker ps --help

nos dirá cómo enumerar los contenedores presentes en nuestro sistema, mientras que

# docker run --help

imprimirá todas las opciones que podemos usar para manipular un contenedor.

Configuración de un contenedor Apache

Una de las cosas asombrosas del ecosistema de Docker es que hay decenas de contenedores estándar que puede descargar y usar fácilmente. En el siguiente ejemplo, crearemos una instancia de un contenedor Apache 2.4 llamado tecmint-web, separado del terminal actual. Usaremos una imagen llamada httpd: 2.4 de Docker Hub.

Nuestro plan es que las solicitudes realizadas a nuestra dirección IP pública en el puerto 8080 se redirijan al puerto 80 en el contenedor. Además, en lugar de ofrecer contenido desde el propio contenedor, proporcionaremos una página web simple desde/home/user/website.

Hacemos esto mapeando/home/user/website/en/usr/local/apache2/htdocs/en el contenedor. Tenga en cuenta que deberá usar sudo o iniciar sesión como root para continuar, y no omita las barras inclinadas al final de cada directorio.

# sudo docker run -dit --name tecmint-web -p 8080:80 -v /home/user/website/:/usr/local/apache2/htdocs/ httpd:2.4

En este punto, nuestro contenedor Apache debería estar en funcionamiento.

$ sudo docker ps

Ahora creemos una página web simple llamada docker.html dentro del directorio/home/user/website.

# vi /home/user/website/docker.html

Agregue el siguiente contenido HTML de muestra al archivo.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Learn Docker at Tecmint.com</title>
</head>
<body>
    <h1>Learn Docker With Us</h1>   
</body>
</html>

A continuación, dirija su navegador a AAA.BBB.CCC.DDD: 8080/docker.html (donde AAA.BBB.CCC.DDD es la dirección IP pública de su host). Debería aparecer la página que creamos anteriormente.

Si lo desea, ahora puede detener el contenedor.

$ sudo docker stop tecmint-web

y eliminarlo:

$ sudo docker rm tecmint-web

Para finalizar la limpieza, es posible que desee eliminar la imagen que se usó en el contenedor (omita este paso si planea crear otros contenedores de Apache 2.4 pronto).

$ sudo docker image remove httpd:2.4

Tenga en cuenta que en todos los pasos anteriores nunca tuvimos que instalar el servidor web en nuestro host.

En este artículo explicamos cómo instalar Docker y manipular un contenedor. Desafortunadamente, estos son solo los conceptos básicos: hay cursos, libros y exámenes de certificación completos que cubren los Dockers (y los contenedores en general) con más profundidad.

Si desea obtener más información sobre Docker, ya hemos cubierto una serie de 3 artículos que explica cómo instalar Docker, ejecutar aplicaciones en contenedores y crear automáticamente imágenes de Docker con dockerfile.

  1. Instale Docker y aprenda la manipulación básica de contenedores en CentOS y RHEL 7/6
  2. Cómo implementar y ejecutar aplicaciones en contenedores Docker en CentOS/RHEL 7/6
  3. Cree y configure automáticamente imágenes de Docker con Dockerfile en CentOS/RHEL 7/6
  4. Cómo eliminar imágenes, contenedores y volúmenes de Docker

Considere esto como su punto de partida y avísenos si tiene alguna pregunta o comentario. ¡Esperamos tener noticias suyas!