Programa
NGINX dentro de un contenedor Docker puede proporcionar un servicio web fiable en muchos entornos. Puede que estés trabajando en un sitio web personal, en un servicio web ligero o en un proyecto de laboratorio casero. Docker puede ayudarte a mantener la coherencia entre diferentes máquinas y configuraciones. Este enfoque ofrece una forma de ejecutar NGINX con menos problemas de sobrecarga al pasar del desarrollo a la producción. Es habitual confiar en Docker para empaquetar de forma sencilla el servidor web, lo que facilita compartir tus proyectos sin engorrosos pasos manuales.
Este artículo explica cómo ejecutar una imagen de NGINX ya preparada, cómo servir contenido desde tu máquina local y cómo construir tu imagen con funciones personalizadas. También cubre los pasos de configuración de un proxy inverso, además del uso de Docker Compose para el despliegue multiservicio. Al final, verás cómo gestionar contenedores con unos sencillos comandos y tendrás una visión detallada de cómo integrar Docker y NGINX para tareas prácticas.
Si eres nuevo en Docker, asegúrate de consultar nuestra guía Guía Docker para principiantes para aprender todo lo esencial.
¿Qué es Docker NGINX?
Docker NGINX se refiere a ejecutar el servidor web NGINX dentro de un contenedor ligero. Los contenedores Docker son similares a pequeños paquetes que contienen una aplicación y todas las dependencias que necesita.
NGINX es un popular servidor web conocido por su gran rendimiento, fácil configuración y gestión flexible del tráfico HTTP. Emparejar NGINX con Docker es atractivo porque mantiene la coherencia del entorno. Si despliegas en macOS, Windows o Linux, el contenido del contenedor sigue siendo el mismo. Eso significa que se comporta de forma idéntica, independientemente del sistema operativo anfitrión.
Una imagen Docker típica para NGINX incluye el software del servidor, una configuración predeterminada y una estructura de directorios para los archivos alojados. Puedes ejecutar ese contenedor inmediatamente o ajustarlo mapeando carpetas específicas, ajustando los archivos de configuración o construyendo una imagen basada en tu propio Dockerfile. Al hacerlo, podrías añadir módulos o scripts personalizados para adaptar NGINX a tu aplicación.
Para saber más sobre cómo contenerizar aplicaciones, consulta nuestra sección Cómo contenerizar una aplicación con Docker tutorial. Explica con más detalle cómo contenerizar aplicaciones de aprendizaje automático con Docker de forma sencilla para principiantes.
Requisitos previos
Antes de empezar a ejecutar contenedores NGINX, confirma que Docker está instalado. Docker tiene instaladores oficiales para macOS, Windows y varias distribuciones de Linux. La documentación de Docker proporciona un proceso paso a paso para cada sistema operativo.
Consulta nuestra Introducción a Docker para obtener una guía completa sobre cómo empezar con Docker.
Prueba tu instalación con un comando rápido como:
docker version
derrickmwiti@Derricks-MacBook-Pro% docker version
Client:
Version: 28.0.1
API version: 1.48
Go version: go1.23.6
Git commit: 068a01e
Built: Wed Feb 26 10:38:16 2025
OS/Arch: darwin/arm64
Context: desktop-linux
Server: Docker Desktop 4.39.0 (184744)
Engine:
Version: 28.0.1
API version: 1.48 (minimum version 1.24)
Go version: go1.23.6
Git commit: bbd0a17
Built: Wed Feb 26 10:40:57 2025
OS/Arch: linux/arm64
Experimental: false
containerd:
Version: 1.7.25
GitCommit: bcc810d6b9066471b0b6fa75f557a15a1cbf31bb
runc:
Version: 1.2.4
GitCommit: v1.2.4-0-g6c52b3f
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Si ves los detalles de la versión, significa que Docker está listo. Además del propio Docker, necesitas acceso a Internet para extraer la imagen NGINX de Docker Hub. Si piensas crear tu imagen, necesitarás un editor de texto para escribir un archivo Dockerfile. Cualquier editor de texto funciona bien, pero elige uno que te resulte cómodo.
Configurar NGINX en un contenedor Docker
Ejecutar NGINX desde una imagen ya preparada suele ser el método más rápido. Puedes sacarlo de Docker Hub en cuestión de segundos y luego lanzar un contenedor. A partir de entonces, verás la página por defecto en tu navegador. Este breve proceso suele ser el primer paso en muchas configuraciones de servidores basadas en Docker.
Extraer la imagen Docker de NGINX
La imagen oficial de NGINX está disponible públicamente en Docker Hub con el nombre nginx
.
Tira así:
docker pull nginx
derrickmwiti@Derricks-MacBook-Pro % docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
4c7c1a5bd3af: Download complete
bef2ee7fab45: Download complete
d9b636547744: Downloading [======================> ] 12.58MB/28.04MB
0994e771ba34: Downloading [===> ] 3.146MB/40.56MB
589701e352f8: Download complete
13f89c653285: Download complete
8e77214beb25: Download complete
Esto va al registro y obtiene la última versión. Cuando todo esté completo, puedes comprobar que existe en tu máquina:
docker images
derrickmwiti@Derricks-MacBook-Pro% docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 124b44bfc9cc 6 weeks ago 280MB
keras-custom-training-container latest <none> 7de0f04013e5 7
Ese comando muestra una lista de imágenes de tu biblioteca local. Deberías ver la imagen nginx
en la tabla. Eso significa que estás preparado para crear un contenedor a partir de él. Descubre una lista de imágenes que necesitarías para tus proyectos de ciencia de datos de nuestro Las 12 mejores imágenes de contenedores Docker para el aprendizaje automático y la IA tutorial.
Ejecutar el contenedor NGINX
Una vez que la imagen NGINX esté en tu sistema, puedes iniciar el contenedor con un solo comando:
docker run --name mynginx -p 8080:80 -d nginx
derrickmwiti@Derricks-MacBook-Pro % docker run --name mynginx -p 8080:80 -d nginx
ec44d1a43016e9684b602437b967c0ed8e11c933a8a76b341b68c25168d2af70
Este comando hace varias cosas. Ejecuta un contenedor llamado mynginx
en segundo plano (debido a la opción -d
). Asigna el puerto 8080 de tu máquina anfitriona al puerto 80 dentro del contenedor. Ese mapeo de puertos significa que puedes visitar http://localhost:8080 en tu navegador y ver la página por defecto de NGINX. El contenedor utiliza la imagen nginx
extraída de Docker Hub.
El nuevo contenedor debería seguir funcionando porque NGINX está activo. Si compruebas los registros con:
docker logs mynginx
derrickmwiti@Derricks-MacBook-Pro % docker logs mynginx
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2025/03/20 04:33:10 [notice] 1#1: using the "epoll" event method
2025/03/20 04:33:10 [notice] 1#1: nginx/1.27.4
2025/03/20 04:33:10 [notice] 1#1: built by gcc 12.2.0 (Debian 12.2.0-14)
2025/03/20 04:33:10 [notice] 1#1: OS: Linux 6.10.14-linuxkit
2025/03/20 04:33:10 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2025/03/20 04:33:10 [notice] 1#1: start worker processes
2025/03/20 04:3
Puedes ver cualquier mensaje que haya escrito NGINX.
Servir contenido personalizado con NGINX
Puede que quieras servir una página HTML, en lugar de la página por defecto incluida en la imagen contenedora. Puedes crear un archivo sencillo en tu máquina local y luego montarlo en el contenedor. Eso mantiene tu contenido separado del contenedor. Cada vez que modifiques tu página, puedes actualizar el navegador para ver el cambio.
Crear una página HTML personalizada
Elige una ubicación conveniente en tu máquina local. Posiblemente una carpeta llamada html_content
en tu directorio personal. Crea allí un archivo index.html
. Podría ser así:
<html>
<head>
<title>My NGINX Page</title>
</head>
<body>
<h1>Hello from my Docker NGINX setup!</h1>
<p>This is a custom page served from a local folder.</p>
</body>
</html>
Es una página HTML básica. Puedes poner el texto o el estilo que quieras. Añade imágenes o JavaScript, o cualquier otra cosa que se adapte a tus necesidades.
Montar la página HTML en el contenedor NGINX
La imagen oficial de NGINX sirve contenido de /usr/share/nginx/html
por defecto. Puedes asignar tu carpeta local a esa ubicación dentro del contenedor. Eso se hace con la bandera -v
(volumen) en Docker. Detén cualquier contenedor existente llamado mynginx
para evitar un conflicto de puertos:
docker stop mynginx
docker rm mynginx
A continuación, inicia un nuevo contenedor:
docker run --name mynginx -p 8080:80 -d \
-v /Users/derrickmwiti/Documents/html_content:/usr/share/nginx/html \
nginx
6f68085733eeac418c3302e5c580a4f7c5c0c36d3591d8e2a7f35f69f6308d18
Sustituye /path/to/html_content
por la ruta real de tu ordenador. De esta forma, siempre que navegues a http://localhost:8080el contenedor servirá el archivo HTML que hayas colocado en html_content
. Por defecto, si lo llamas index.html
, NGINX cargará ese archivo automáticamente.
Este enfoque es beneficioso cuando quieres ajustar el contenido con regularidad. No es necesario que reconstruyas el contenedor cada vez. El servidor extrae el contenido de tu carpeta local sobre la marcha.
Si ves una advertencia relacionada con los permisos, puede que tengas que asegurarte de que tu usuario local y Docker pueden leer esa carpeta.
En Linux, eso puede significar ajustar la propiedad o los permisos de los archivos. En Windows o macOS, puede significar conceder a Docker permiso para acceder a tu unidad.
Crear una imagen Docker personalizada de NGINX
Montar una carpeta local es una solución rápida para pruebas sencillas. Puede que quieras módulos adicionales, una configuración especial o algún otro ajuste. Ahí es donde construir una imagen puede ser útil.
Docker facilita la creación de un pequeño archivo de recetas, conocido como Dockerfile, que configura un contenedor exactamente como tú quieres. Entonces tendrás una imagen que podrás compartir con los demás o enviar a un registro. Eso puede ser más cómodo que decirle a la gente que monte un montón de archivos locales.
Crear un archivo Dockerfile
Un Dockerfile no es más que un archivo de texto plano. Puedes llamarlo Dockerfile
o elegir otro nombre si lo prefieres. Colócalo en un directorio nuevo. He aquí un ejemplo sencillo:
FROM nginx:latest
COPY index.html /usr/share/nginx/html/index.html
Utiliza como base la imagen oficial de nginx:latest
. A continuación, copia un archivo local llamado index.html
en la carpeta de contenido web por defecto del contenedor. Puedes incluir más líneas si las necesitas. Por ejemplo, puedes copiar un nginx.conf
personalizado o añadir módulos que quieras instalar. Eso depende de tus necesidades. Si sólo quieres colocar una página estática, el fragmento anterior es suficiente.
Cuando tengas ese Dockerfile en su sitio, añade el index.html
personalizado en la misma carpeta. Entonces podrás construir. El comando típico es:
docker build -t mynginximage .
[+] Building 2.6s (7/7) FINISHED docker:desktop-linux
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 245B 0.0s
=> [internal] load metadata for docker.io/library/nginx:latest 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 365B 0.0s
=> [1/2] FROM docker.io/library/nginx:latest@sha256:124b44bfc9ccd1f3cedf4b592d4d1e8bddb78b51ec2ed5056c52d3692baebc19 2.3s
=> => resolve docker.io/library/nginx:latest@sha256:124b44bfc9ccd1f3cedf4b592d4d1e8bddb78b51ec2ed5056c52d3692baebc19 2.3s
=> [2/2] COPY index.html /usr/share/nginx/html/index.html 0.0s
=> exporting to image 0.1s
=> => exporting layers 0.0s
=> => exporting manifest sha256:19dd719772fd7ac839fadb7d49862f84422f4571a442994ffaca152e9674553a 0.0s
=> => exporting config sha256:e974f3ab92a0278e419f0fe4c5a6fc43fafb4a75da27895d90c4f2d5d385daa1 0.0s
=> => exporting attestation manifest sha256:e391b0212e5a100bd9132fbbd6cb4052e288dbbcba093839b55f8b197131372b 0.0s
=> => exporting manifest list sha256:d35c2bbe10ab0b7e46d1ef8fba6c6cb28628eb9c283db02607e32e95b62e14d5 0.0s
=> => naming to docker.io/library/mynginximage:latest 0.0s
=> => unpacking to docker.io/library/mynginximage:latest 0.0s
El punto al final indica que el directorio actual es el contexto de construcción. Docker lee el Dockerfile en ese directorio. Terminarás con una imagen llamada mynginximage
en tu sistema local. Compruébalo con:
docker images
mynginximage latest d35c2bbe10ab 36 seconds ago 281MB
Deberías ver el nuevo nombre en la lista. Este enfoque significa que tu Dockerfile y el HTML se combinan en una sola imagen. No tienes que montar nada en tiempo de ejecución.
Construir y ejecutar la imagen personalizada
Ahora que tienes construido mynginximage
, puedes ejecutarlo:
docker run --name mycustomnginx -p 8080:80 -d mynginximage
Asegúrate de detener el contenedor anterior para evitar conflictos de puertos.
Este contenedor sirve automáticamente la página que colocaste en el Dockerfile. Si abres un navegador en http://localhost:8080, deberías ver ese texto HTML.
Puedes compartir tu Dockerfile con otros o enviar la imagen creada a un registro. Luego, tus compañeros de equipo o colegas pueden ponerlo en marcha sin copiar las carpetas locales.
Esto completa el proceso de creación de una imagen NGINX personalizada mínima. Has partido de la base oficial, has copiado uno o dos archivos y has creado un nuevo contenedor que incluye tu sitio personalizado. Puedes ampliar aún más el archivo Dockerfile. Por ejemplo, puede que quieras cambiar la configuración para gestionar PHP con php-fpm
en una compilación multietapa o añadir módulos personalizados que NGINX no incluye por defecto.
Este enfoque pone de relieve la flexibilidad de Docker: cada capa del Dockerfile puede encargarse de una tarea determinada, y la imagen final puede distribuirse fácilmente. Tienes control sobre el contenido web, además de la opción de ajustar la configuración para que tu contenedor se adapte a tu proyecto.
Explora estas 10 ideas de proyectos Docker para aprender Docker con proyectos prácticos centrados en la creación y optimización de aplicaciones de ciencia de datos.
Configurar NGINX como proxy inverso
NGINX puede dirigir las peticiones entrantes a otros servicios del mismo sistema o incluso a servicios que se ejecuten en máquinas distintas. A esto se le suele llamar configuración de proxy inverso. Puedes colocar NGINX delante de un grupo de aplicaciones para que las peticiones pasen por un único punto de entrada.
Esto es habitual cuando tienes varios contenedores Docker escuchando en puertos diferentes, y quieres un único nombre de dominio para todo. NGINX escucha en un puerto estándar, como 80 o 443, y luego dirige el tráfico al servicio correcto en función de la ruta, el nombre de host u otros factores.
Comprender el proxy inverso
Cuando NGINX está configurado de esta forma, el cliente no es consciente de la comunicación en segundo plano. NGINX actúa como la cara pública, recibiendo y reenviando las peticiones y devolviendo las respuestas al cliente.
Este diseño simplifica la estructura de tu red. También ofrece la oportunidad de ajustar el almacenamiento en caché, añadir certificados TLS, gestionar el equilibrio de carga o realizar otras tareas avanzadas. A menudo es más fácil gestionar estas tareas en un único lugar, en lugar de dispersarlas entre varios servicios.
Un escenario típico podría implicar un contenedor que ejecuta NGINX en el puerto 80, que envía peticiones a un contenedor de aplicación en el puerto 3000. Mientras el cliente visita http://yourdomain.com, el tráfico se dirige a un contenedor independiente entre bastidores.
Eso podría permitir a tu contenedor de aplicaciones mantener su puerto por defecto, con una sobrecarga mínima para el usuario. Otra razón para hacerlo es que tal vez quieras ocultar los detalles internos de tus servicios o presentar una estructura de URL uniforme.
Configurar NGINX para proxy inverso
Para conseguirlo, necesitas un archivo de configuración para NGINX personalizado que utilice directivas proxy. Puedes hacerlo montando un nuevo archivo de configuración cuando ejecutes el contenedor, o construyendo una imagen personalizada que lo incluya. He aquí un ejemplo sencillo para ilustrar la idea general:
server {
listen 80;
location / {
proxy_pass http://myapp:3000/;
}
}
En el fragmento anterior, cualquier petición que llegue a tu contenedor NGINX por el puerto 80 se envía a myapp:3000
. El nombre myapp
sugiere que hay otro contenedor accesible con ese nombre, lo que es habitual cuando utilizas la red Docker .
Si utilizas contenedores autónomos, puedes asignar la dirección IP del contenedor o utilizar la IP del host. También puedes añadir configuraciones más avanzadas, como proxy_set_header Host $host
, o ajustar los valores de tiempo de espera para adaptarlos a tu aplicación.
Si optas por montar este archivo en tiempo de ejecución, puedes hacer algo así:
docker run --name nginxproxy -p 8080:80 -d \
-v /path/to/nginx.conf:/etc/nginx/conf.d/default.conf \
--network mynetwork \
nginx
Este comando ejecuta el contenedor NGINX, montando tu nginx.conf
local como configuración por defecto. También conecta el contenedor a una red Docker llamada mynetwork
, donde reside tu otro contenedor (myapp
). Suele ser el enfoque más sencillo si quieres mantener tu configuración fuera del contenedor.
También es posible poner ese archivo en un Dockerfile si quieres una disposición estática. Cualquiera de los dos enfoques puede funcionar, siempre que las referencias coincidan con la forma en que nombraste tus contenedores y redes.
Este diseño te permite tener un único dominio o IP para todos tus servicios web, junto con un puerto común. Si trabajas con varios contenedores back-end, podrías definir varias ubicaciones en tu configuración, cada una apuntando a un puerto de contenedor distinto. NGINX puede entonces enrutar a cada servicio basándose en la ruta URL. Es un enfoque popular para los microservicios porque consolida los puntos de entrada de forma ordenada.
Uso de Docker Compose para el despliegue de NGINX
Un proxy inverso suele ser más útil cuando tienes varios contenedores que trabajan juntos. Docker Compose es una herramienta que te permite definir muchos servicios en un único archivo. Luego, puedes subirlas o bajarlas con una sola orden. Reduce la posibilidad de errores en la creación de contenedores o en la asignación de puertos, porque todos los detalles residen en un archivo estándar.
Introducción a Docker Compose
Docker Compose te permite gestionar conjuntos de contenedores. Describes cada servicio, especificas la imagen a utilizar, los puertos a publicar, los volúmenes a montar y las redes a las que unirse. Entonces un simple comando (docker compose up -d
) lo pondrá todo en marcha a la vez .
Este enfoque es útil para el desarrollo local o para entornos de ensayo en los que necesites coordinar varios contenedores Docker. El formato de archivo habitual es YAML.
Aunque Docker Compose puede funcionar en varios sistemas operativos, debes asegurarte de que está instalado y reconocido. Las instalaciones modernas de Docker Desktop suelen incluirlo por defecto. Comprueba tu versión con:
docker compose version
Docker Compose version v2.33.1-desktop.1
Si ves los detalles de la versión, estás listo para continuar. Si no es así, consulta la documentación de Docker para saber cómo activar o instalar Docker Compose.
Crear un archivo docker-compose.yml
El archivo suele incluir una sección de servicios. A continuación se muestra un ejemplo sencillo de un archivo docker-compose.yml
que configura un único contenedor NGINX para servir contenido estático:
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
He aquí cómo interpretar el archivo:
- servicios: Define los servicios (contenedores) que componen tu aplicación.
- web: Este servicio utiliza la última imagen de NGINX.
- puertos: Asigna el puerto 80 dentro del contenedor al puerto 8080 en tu máquina anfitriona. Esto te permite acceder al servidor web a través de http://localhost:8080.
- volúmenes: Monta el directorio local
html
en el directorio de contenido por defecto de NGINX dentro del contenedor (/usr/share/nginx/html). Esta configuración permite a NGINX servir tu contenido estático personalizado.
Desplegar servicios con Docker Compose
En el mismo directorio que tu archivo docker-compose.yml
, crea un subdirectorio llamado html
.
Coloca tus archivos HTML estáticos (por ejemplo, index.html
) dentro de este directorio html
. En este caso, he creado una página sencilla con estilo Bootstrap para la demostración.
Abre un terminal y navega hasta el directorio de tu proyecto que contiene el archivo docker-compose.yml
.
Ejecuta el siguiente comando para iniciar el servicio:
docker compose up -d
[+] Running 1/1
✔ Container html_content-web-1 Started
La bandera -d
ejecuta el contenedor en modo separado, permitiéndole funcionar en segundo plano.
Docker Compose consulta el archivo docker-compose.yml
en el directorio actual. Extrae las imágenes que aún no estén presentes y, a continuación, lanza cada contenedor.
Abre tu navegador y navega hasta http://localhost:8080.
Deberías ver tu contenido estático siendo servido por NGINX.
Puedes inspeccionar el estado de tus servicios en ejecución comprobando:
docker compose ps
Si necesitas desmontarlo todo, un solo comando puede eliminar los contenedores:
docker compose down
Eso las detiene y las elimina todas a la vez. Si quieres replicar todo el entorno, sólo tienes que copiar el archivo Docker Compose y el código correspondiente a una nueva máquina, y luego ejecutar los mismos comandos. Esto garantiza que obtengas resultados coherentes con un mínimo de pasos manuales.
Gestión de Contenedores NGINX
Aunque el enfoque Docker Compose es popular para flujos de trabajo multiservicio, a veces sólo necesitas gestionar un único contenedor o un pequeño clúster. Docker proporciona unos cuantos comandos básicos que te ayudan a ver lo que se está ejecutando, pausar o detener contenedores y eliminarlos si es necesario.
Son esenciales para el mantenimiento, especialmente si estás experimentando con varios contenedores NGINX o compilaciones repetidas.
Ver contenedores en ejecución
Siempre que quieras ver qué contenedores se están ejecutando, puedes utilizar
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2d386c085129 mynginximage "/docker-entrypoint.…" 4 minutes ago Up 4 minutes 0.0.0.0:8080->80/tcp mycustomnginx
Ese comando imprime una tabla de los contenedores activos, cada uno con un ID, imagen, nombre, etc. Si necesitas ver todos los contenedores, incluidos los que se han parado, utiliza
docker ps -a
Muestra todos los contenedores que existen en tu sistema, incluso los que han salido. A menudo es útil ver qué contenedores siguen ahí de tiradas anteriores. Es posible que tengas contenedores con los nombres mynginx
, mycustomnginx
, o cualquier otro si has estado experimentando con varias imágenes.
Parar y retirar contenedores
Cuando hayas terminado con un contenedor, puedes detenerlo por su nombre:
docker stop mynginx
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2d386c085129 mynginximage "/docker-entrypoint.…" 4 minutes ago Up 4 minutes 0.0.0.0:8080->80/tcp mycustomnginx
Eso indica a Docker que envíe una señal de parada al contenedor, lo que debería hacer que NGINX se apagara limpiamente. Si quieres retirar el recipiente justo después, puedes hacerlo:
docker rm mynginx
Si prefieres un único comando que pare y elimine de una sola vez, prueba:
docker rm -f mynginx
Eso fuerza la retirada, deteniendo el contenedor si aún está en marcha. Ten cuidado al utilizar este enfoque en un entorno de producción, ya que termina el contenedor sin darle un apagado graceful. Otro comando de limpieza es docker rmi
, que elimina imágenes de tu sistema .
Esto es útil si ya no necesitas determinadas imágenes y quieres liberar espacio. Sin embargo, Docker sólo borra las imágenes que no están siendo utilizadas por un contenedor en ejecución.
Conclusión
NGINX en Docker es una forma práctica de servir páginas web o dirigir el tráfico a otros servicios. Puedes ejecutar la imagen oficial o crear la tuya propia con un simple archivo Dockerfile. Docker Compose puede coordinar varios contenedores, haciendo que las configuraciones complejas sean más fáciles de manejar.
Con estos métodos, puedes entregar contenidos, gestionar el reenvío y mantener un entorno fiable para los proyectos web.
Si necesitas un enfoque más práctico para aprender Docker, consulta nuestro Curso de Introducción a Docker para descubrir su importancia en el conjunto de herramientas del profesional de los datos.
Preguntas frecuentes sobre NGINX Docker
¿Cómo puedo ejecutar un contenedor NGINX utilizando Docker?
Puedes iniciar un contenedor NGINX con el siguiente comando:
docker run --name mynginx -p 8080:80 -d nginx
Esto ejecuta un contenedor NGINX en segundo plano y asigna el puerto 8080 de tu máquina al puerto 80 dentro del contenedor. Puedes acceder a ella visitando http://localhost:8080 en tu navegador.
¿Cómo puedo servir contenido personalizado con NGINX en Docker?
Para servir tus archivos HTML, monta un directorio local en el contenedor NGINX de la siguiente manera:
docker run --name mynginx -p 8080:80 -d -v /path/to/html:/usr/share/nginx/html nginx
Sustituye /ruta/a/html por la ruta real a tus archivos HTML. El contenedor servirá el contenido de ese directorio en lugar de la página por defecto.
¿Cómo configuro NGINX como proxy inverso en Docker?
Crea un archivo nginx.conf personalizado con el siguiente contenido:
server {
listen 80;
location / {
proxy_pass http://myapp:3000/;
}
}
A continuación, ejecuta el contenedor NGINX con el archivo de configuración montado:
docker run --name nginxproxy -p 8080:80 -d -v /path/to/nginx.conf:/etc/nginx/conf.d/default.conf nginx
Esto reenviará las peticiones de http://localhost:8080 a tu aplicación que se ejecuta en el puerto 3000.
¿Cómo puedo utilizar Docker Compose para desplegar NGINX con otros servicios?
Crea un archivo docker-compose.yml
con el siguiente contenido:
services:
myapp:
image: myappimage
expose:
- "3000"
nginxproxy:
image: nginx
ports:
- "8080:80"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- myapp
Ejecuta los servicios con:
docker compose up -d
Esto inicia tu aplicación y el proxy NGINX en un solo comando.
¿Cómo detengo y elimino un contenedor NGINX en Docker?
Para detener un contenedor NGINX en ejecución, utiliza:
docker stop mynginx
Para eliminar completamente el contenedor, ejecuta
docker rm mynginx
Si quieres eliminar el contenedor y su imagen, también puedes eliminar la imagen con:
docker rmi nginx
Esto limpia el contenedor y su imagen almacenada de tu sistema.