
Estoy ejecutando Ubuntu 22.04.3 LTS en una máquina virtual. Instalé Nginx con el puerto 80.
Al acceder a http://localhost:80, Nginx muestra el sitio web normal.
Luego instalé la ventana acoplable y dos imágenes. Le di acceso a la API de imágenes en el puerto 9000.
Pero al acceder a http://localhost:9000, se muestra un error. Acceder en cartero devuelve un 404.
Parece que necesito vincular o permitir el puerto 9000 en Nginx, o vincular el acceso desde la ventana acoplable al puerto.
No pude encontrar cómo permitir más puertos en Nginx o cómo vincular el contenedor expuesto en el puerto 9000. Así es como se muestra en la imagen en la ventana acoplable:
0.0.0.0:9000->9000/tcp, :::9000->9000/tcp
Realicé los pasos para el servidor:
cd /etc/nginx/sites-enabled
sudo "${EDITOR:-vi}" docker
server {
listen 80;
listen [::]:80;
server_name example.ubuntu.com;
root /var/www/docker;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Si ejecuto GET en cartero: http://localhost:9000/kalum-management/v1/jornadas debería devolver datos. Por alguna razón, la confusión con Docker y Nginx se mezcló y no estoy seguro de cómo exponer Docker al puerto 9000.
Respuesta1
Docker crea su propia red y adaptador de red. Al ejecutar los contenedores, puede usar la opción network_mode host para poder conectarse desde el sistema operativo del host a la red acoplable a la que está vinculado el contenedor. Recomendaría usar Docker Compose y también les mostraré un ejemplo de Docker Compose para publicar más puertos.
version: '3'
services:
your_service_name:
container_name: your_container_name
image: your_image_name
network_mode: host
volumes:
- /path/on/host:/mnt
Tenga en cuenta que no puede utilizar los puertos públicos y el host en modo de red juntos.
Guarde este archivo en un directorio como docker-compose.yml y luego ejecútelo condocker-compose up -d
opcion 2
O averigua la dirección IP del contenedor usando el siguiente comando
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container_name_or_id>
Y luego, en lugar de http://localhost:9000, reemplaza localhost con la ip del contenedor. Puede que no funcione porque no se puede acceder a la red acoplable (creada automáticamente al iniciar el contenedor) desde el host (corríjame si me equivoco, pero de forma predeterminada no hay enrutamiento entre la red principal del sistema operativo host y la ventana acoplable red a la que está vinculado el contenedor)