Ejecuta un contenedor Docker en segundo plano usando la imagen nginx:stable-alpine
. Mapea el puerto 80 del contenedor al puerto 8081 del host.
docker run -d -p 8081:80 nginx:stable-alpine
Accede a http://localhost:8081/ en tu navegador para ver la página por defecto de Nginx.
Lista todos los contenedores Docker para verificar que el contenedor de Nginx esté corriendo y obtener su nombre o ID.
docker ps -a
Accede al shell del contenedor de Nginx, reemplazando [container-name|container-id] por el nombre o ID del contenedor.
docker exec -it [container-name|container-id] sh
Navega al directorio donde Nginx almacena los archivos estáticos y visualiza el contenido del index.html por defecto.
cd usr/share/nginx/html
cat index.html
Sale del shell interactivo del contenedor.
exit
En tu máquina local, navega a la ruta deseada y crea un nuevo archivo index.html con el contenido que quieras mostrar en el servidor Nginx.
Copia el nuevo index.html desde tu máquina local al directorio adecuado dentro del contenedor, sobrescribiendo el archivo existente.
docker cp [ruta-local/index.html] [container-name|container-id]:/usr/share/nginx/html/
Visita http://localhost:8081/ nuevamente para ver los cambios reflejados en el navegador.
Ejecutamos el contenedor, utilizando opciones para configurar su comportamiento en el sistema host.
docker run -d -v /home/ccavila/Documents/HolaMundoNginx:/usr/share/nginx/html -p 8082:80 nginx:stable-alpine
-d: Significa "daemon" y ejecuta el contenedor en segundo plano, permitiendo que el host continúe utilizándose para otras tareas.
-v /home/ccavila/Documents/HolaMundoNginx:/usr/share/nginx/html: Monta el volumen que contiene el index.html en la ruta especificada dentro del contenedor. Esto permite que los cambios en el archivo local se reflejen en el contenedor.
-p 8082:80: Mapea el puerto 80 del contenedor al puerto 8082 del host, haciendo que el Nginx del contenedor sea accesible a través del puerto 8082 del host.
nginx:stable-alpine: Nombre de la imagen Docker a utilizar.
Para mayor claridad en la gestión de contenedores, renombramos el contenedor en ejecución.
docker rename [container-name] actividad_2
docker rename: Comando para cambiar el nombre de un contenedor Docker existente.
[container-name]: Nombre o ID del contenedor original.
actividad_2: Nuevo nombre asignado al contenedor.
1. El Dockerfile
utilizado para esta actividad está diseñado para construir una imagen de Nginx que sirve una página estática personalizada:
# Usar nginx stable version basado en Alpine
FROM nginx:stable-alpine
# Copiar el archivo index.html desde el directorio local al directorio de Nginx dentro del contenedor
COPY index.html /usr/share/nginx/html/
# Exponer el puerto 80
EXPOSE 80
FROM nginx:stable-alpine: Establece la imagen base como Nginx en su versión estable, utilizando Alpine Linux, que es ligero y rápido.
COPY index.html /usr/share/nginx/html/: Copia el archivo index.html desde el directorio de contexto de la construcción (donde se encuentra el Dockerfile) al directorio que Nginx usa para servir archivos estáticos.
EXPOSE 80: Informa a Docker que el contenedor escuchará en el puerto 80. Este puerto será utilizado para acceder al servidor Nginx desde el navegador.
Construye la imagen utilizando el siguiente comando en el directorio donde se encuentran el Dockerfile y el index.html:
docker build -t mi-nginx .
docker build: Comando para construir imágenes Docker.
-t mi-nginx: Etiqueta la imagen construida como mi-nginx.
Una vez construida la imagen, ejecuta el contenedor usando:
docker run -d -p 8083:80 --name actividad_3 mi-nginx
-d: Ejecuta el contenedor en modo daemon, es decir, en segundo plano.
-p 8083:80: Mapea el puerto 80 del contenedor al puerto 8083 del host, permitiendo el acceso al servidor Nginx a través de http://localhost:8083.
--name actividad_3: Asigna el nombre actividad_3 al contenedor para facilitar su gestión.
Verificar la Implementación Después de ejecutar el contenedor, puedes verificar que el servidor Nginx está sirviendo el index.html personalizado accediendo a:
http://localhost:8083
Esto debería mostrarte el contenido del archivo index.html que se ha integrado en la imagen Docker.