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`