Se puede acceder a Docker a través de localhost:8080 y 127.0.0.1:8080 pero no a través de IP

Se puede acceder a Docker a través de localhost:8080 y 127.0.0.1:8080 pero no a través de IP

Tengo el siguiente escenario: 3x Vagrant VM se generan desde el siguiente Vagrantfile, en funcionamiento (visible dentro de Oracle VirtualBox).

He iniciado sesión en Docker1, el tipo de red es "NAT", se utiliza el reenvío de puertos (Invitado: 8080, Host: 8080).

Puedo acceder a la página desde localhost:8080 y 127.0.0.1:8080 y 127.0.1.1:8080. Sin embargo, no tengo acceso a través de la IP (192.168.99.101:8080 indica que "tarda demasiado en responder" y no se puede localizar).

Vagrant.configure("2") do |config|

    config.vm.define "docker1" do |docker1|
        docker1.vm.box="xxx/centos-stream-8"
        docker1.vm.hostname = "docker1.do1.lab"
        docker1.vm.network "private_network", ip: "192.168.99.101"
        docker1.vm.provision "shell", path: "docker-setup.sh"
        docker1.vm.provision "shell", path: "other-steps.sh"
        docker1.vm.provider :virtualbox do |vb|
            vb.customize ["modifyvm", :id, "--memory", "1536"]
        end
    end
    
    config.vm.define "docker2" do |docker2|
        docker2.vm.box="xxx/centos-stream-8"
        docker2.vm.hostname = "docker2.do1.lab"
        docker2.vm.network "private_network", ip: "192.168.99.102"
        docker2.vm.provision "shell", path: "docker-setup.sh"
        docker2.vm.provision "shell", path: "other-steps.sh"
        docker2.vm.provider :virtualbox do |vb|
            vb.customize ["modifyvm", :id, "--memory", "1536"]
        end
    end
    
    config.vm.define "docker3" do |docker3|
        docker3.vm.box="xxx/centos-stream-8"
        docker3.vm.hostname = "docker3.do1.lab"
        docker3.vm.network "private_network", ip: "192.168.99.103"
        docker3.vm.provision "shell", path: "docker-setup.sh"
        docker3.vm.provision "shell", path: "other-steps.sh"
        docker3.vm.provider :virtualbox do |vb|
            vb.customize ["modifyvm", :id, "--memory", "1536"]
        end
    end
end

el archivo docker-setup.sh se encuentra a continuación:

#!/bin/bash

echo "* Add Docker repository ..."
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

echo "* Install Docker ..."
dnf install -y docker-ce docker-ce-cli containerd.io

echo "* Enable and start Docker ..."
systemctl enable docker
systemctl start docker

echo "* Add vagrant user to docker group ..."
usermod -aG docker vagrant

el archivo other-steps.sh se encuentra a continuación:

#!/bin/bash

echo "* Add hosts ..."
echo "192.168.99.101 docker1.do1.lab docker1" >> /etc/hosts
echo "192.168.99.102 docker2.do1.lab docker2" >> /etc/hosts
echo "192.168.99.103 docker3.do1.lab docker3" >> /etc/hosts

echo "* Install Additional Packages ..."
dnf install -y jq tree git nano

echo "* Firewall - swarm - open ports ..."
firewall-cmd --add-port=2377/tcp --permanent
firewall-cmd --add-port=4789/udp --permanent
firewall-cmd --add-port=7946/tcp --permanent
firewall-cmd --add-port=7946/udp --permanent

echo "* Firewall - app - open port 8080 ..."
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload

Las redes están a continuación:

[vagrant@docker1 etc]$ docker network ls
NETWORK ID     NAME              DRIVER    SCOPE
f2351cd29061   bridge            bridge    local
f91a21d83931   docker_gwbridge   bridge    local
c5fc9aedf330   host              host      local
oc2i4c2czira   ingress           overlay   swarm
50fe2b72573c   none              null      local

El contenido de etc/hosts está aquí:

[vagrant@docker1 etc]$ cat hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.1.1 docker1.do1.lab docker1
192.168.99.101 docker1.do1.lab docker1
192.168.99.102 docker2.do1.lab docker2
192.168.99.103 docker3.do1.lab docker3

El comando utilizado para activar un contenedor es el siguiente:

docker container run -d --name web -p 8080:80 -e APP_MODE='test' swarm-app

He investigado toneladas de artículos con el mismo problema pero todavía no puedo encontrar una solución. Supongo que esto podría tener algo que ver con la resolución DNS de la dirección IP en cuestión.

Actualización: Estoy abriendo en CMD a través de curl las siguientes direcciones (Host de reenvío de puerto: 8080, Invitado: 80), si hay alguna información que proporcionar, hágamelo saber: `[vagrant@docker1 ~]$ curl http:/localhost:8080-> no se abre en el navegador

¡Hola Docker Swarm!

Ejecutando en modo de prueba.

Servido por:be93b0268b1d

[vagrant@docker1 ~]$ rizohttp://172.17.0.2:80 -> esta es la IP del contenedor - no se abre a través del navegador

¡Hola Docker Swarm!

Ejecutando en modo de prueba.

Servido por:be93b0268b1d

[vagrant@docker1 ~]$ rizohttp://192.168.99.101:8080 -> esta es la IP del host de Docker que se supone que se abre a través del navegador, además sin éxito

¡Hola Docker Swarm!

Ejecutando en modo de prueba.

Servido por:be93b0268b1d`

información relacionada