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


Si eres un administrador de sistemas Linux que proporciona soporte para desarrolladores, es probable que hayas 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 para ejecutar para eliminar las diferencias entre los entornos.

En otras palabras, el software en contenedor funcionará y puede administrarse de manera consistente, 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 saber más acerca de las diferencias entre estas dos tecnologías, el sitio web oficial de Docker brinda una excelente explicación.

Para ilustrar, en este artículo explicaremos cómo instalar Docker en CentOS 7 y Ubuntu 16.04 , y encenderemos un Apache 2.4 contenedor de Docker Hub .

Luego lo utilizaremos para servir una página web simple desde nuestro directorio principal, 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 podemos simplemente ejecutar.

# docker

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

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

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

# docker run --help

Imprimiremos todas las opciones que podamos usar para manipular un contenedor.

Configuración de un contenedor de Apache

Una de las cosas sorprendentes del ecosistema 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 Apache 2.4 denominado tecmint-web , separado del terminal actual. Usaremos una imagen llamada httpd: 2.4 de Docker Hub .

Nuestro plan es que las solicitudes hechas 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, ofreceremos una página web simple desde /home/user/website .

Lo hacemos asignando /home/user/website/ en /usr/local/apache2/htdocs/ en el contenedor. Tenga en cuenta que necesitará usar sudo o iniciar sesión como raíz para continuar, y no omita las barras diagonales 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 vamos a crear una página web simple llamada docker.html dentro de /home/user/website directory .

# 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). Debes presentarte la página que creamos anteriormente.

Si lo desea, ahora puede detener el contenedor.

$ sudo docker stop tecmint-web

y quitarlo:

$ sudo docker rm tecmint-web

Para finalizar la limpieza, es posible que desee eliminar la imagen que se utilizó en el contenedor (omita este paso si planea crear otros contenedores 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 aspectos básicos: hay cursos completos, libros y exámenes de certificación que cubren Dockers (y contenedores en general) con mayor 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 el dockerfile.

  1. Install Docker and Learn Basic Container Manipulation in CentOS and RHEL 7/6
  2. How to Deploy and Run Applications into Docker Containers on CentOS/RHEL 7/6
  3. Automatically Build and Configure Docker Images with Dockerfile on CentOS/RHEL 7/6
  4. How to Remove Docker Images, Containers and Volumes

Considere esto como su punto de partida y háganos saber si tiene alguna pregunta o comentario. ¡Esperamos saber de usted!