VMWare Ubuntu: cómo acceder a un contenedor acoplable en Ubuntu mientras se ejecuta nginx

VMWare Ubuntu: cómo acceder a un contenedor acoplable en Ubuntu mientras se ejecuta nginx

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)

información relacionada