ฉันมีสถานการณ์ด้านล่าง - 3x Vagrant VMs ถูกหมุนจากไฟล์ Vagrant ด้านล่าง ขึ้นและทำงาน (มองเห็นได้ภายใน Oracle VirtualBox)
ฉันเข้าสู่ระบบบน docker1 ประเภทเครือข่ายคือ "NAT" ใช้การส่งต่อพอร์ต (Guest:8080, Host:8080)
ฉันสามารถเข้าถึงหน้านี้ได้จาก localhost:8080 & 127.0.0.1:8080 & 127.0.1.1:8080 อย่างไรก็ตาม ฉันไม่สามารถเข้าถึงได้ผ่าน IP (192.168.99.101:8080 คือ "ใช้เวลานานเกินไปในการตอบสนอง" และไม่สามารถเข้าถึงได้)
Vagrant.configure("2") ทำ |config|
config.vm.define "docker1" ทำ |docker1|
นักเทียบท่า 1.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", เส้นทาง: "docker-setup.sh"
docker1.vm.provision "shell", เส้นทาง: "other-steps.sh"
docker1.vm.provider :virtualbox ทำ |vb|
vb.customize ["modifyvm", :id, "--memory", "1536"]
จบ
จบ
config.vm.define "docker2" ทำ |docker2|
นักเทียบท่า2.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", เส้นทาง: "docker-setup.sh"
docker2.vm.provision "shell", เส้นทาง: "other-steps.sh"
docker2.vm.provider :virtualbox ทำ |vb|
vb.customize ["modifyvm", :id, "--memory", "1536"]
จบ
จบ
config.vm.define "docker3" ทำ |docker3|
นักเทียบท่า3.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", เส้นทาง: "docker-setup.sh"
docker3.vm.provision "shell", เส้นทาง: "other-steps.sh"
docker3.vm.provider :virtualbox ทำ |vb|
vb.customize ["modifyvm", :id, "--memory", "1536"]
จบ
จบ
จบ
ไฟล์ docker-setup.sh อยู่ด้านล่าง:
#!/bin/bash
echo "* เพิ่มที่เก็บ Docker ... "
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
echo "* ติดตั้ง Docker ..."
dnf ติดตั้ง -y นักเทียบท่า-ce นักเทียบท่า-ce-cli containerd.io
echo "* เปิดใช้งานและเริ่ม Docker ..."
systemctl เปิดใช้งานนักเทียบท่า
systemctl เริ่มนักเทียบท่า
echo "* Add vagrant user to docker group ..."
usermod -aG นักเทียบท่าคนจรจัด
ไฟล์ other-steps.sh อยู่ด้านล่าง:
#!/bin/bash
echo "* เพิ่มโฮสต์ ... "
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 "* ติดตั้งแพ็คเกจเพิ่มเติม ..."
dnf ติดตั้ง -y jq tree git nano
echo "* ไฟร์วอลล์ - ฝูง - เปิดพอร์ต ... "
ไฟร์วอลล์ cmd --add-port=2377/tcp --permanent
ไฟร์วอลล์ cmd --add-port=4789/udp --permanent
ไฟร์วอลล์ cmd --add-port=7946/tcp --permanent
ไฟร์วอลล์ cmd --add-port=7946/udp --permanent
echo "* ไฟร์วอลล์ - แอพ - เปิดพอร์ต 8080 ... "
ไฟร์วอลล์ cmd --add-port=8080/tcp --permanent
ไฟร์วอลล์ cmd --reload
เครือข่ายอยู่ด้านล่าง:
[vagrant@docker1 etc]$ เครือข่ายนักเทียบท่า ls
ขอบเขตไดรเวอร์ชื่อรหัสเครือข่าย
f2351cd29061 บริดจ์ บริดจ์ โลคอล
f91a21d83931 สะพาน docker_gwbridge ในเครื่อง
c5fc9aedf330 โฮสต์โฮสต์โลคัล
oc2i4c2czira ingress ซ้อนทับฝูง
50fe2b72573c ไม่มีค่าว่างในเครื่อง
เนื้อหา etc/hosts อยู่ที่นี่:
[vagrant@docker1 etc]โฮสต์แมว $
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
คำสั่งที่ใช้ในการหมุนคอนเทนเนอร์คือคำสั่งด้านล่าง:
เรียกใช้คอนเทนเนอร์นักเทียบท่า -d --name web -p 8080:80 -e APP_MODE='test' swarm-app
ฉันได้ค้นคว้าบทความมากมายที่มีปัญหาเดียวกัน แต่ก็ยังไม่สามารถหาวิธีแก้ปัญหาได้ ฉันคิดว่าสิ่งนี้อาจเกี่ยวข้องกับการแก้ไข DNS ของที่อยู่ IP ที่เป็นปัญหา
อัปเดต: ฉันกำลังเปิดใน CMD ผ่าน curl ที่อยู่ด้านล่าง (โฮสต์การส่งต่อพอร์ต: 8080, ผู้เยี่ยมชม: 80) หากมีข้อมูลใด ๆ โปรดแจ้งให้เราทราบ:
`[vagrant@docker1 ~]$ curl http:/localhost:8080 -> ไม่เปิดในเบราว์เซอร์
สวัสดีนักเทียบท่า Swarm!
ให้บริการโดย: be93b0268b1d[vagrant@docker1 ~]$ ขด http://172.17.0.2:80 -> นี่คือคอนเทนเนอร์ IP - ไม่เปิดผ่านเบราว์เซอร์
สวัสดีนักเทียบท่า Swarm!
ให้บริการโดย: be93b0268b1d[vagrant@docker1 ~]$ ขด http://192.168.99.101:8080 -> นี่คือ IP โฮสต์ Docker ที่ควรจะเปิดผ่านเบราว์เซอร์ - และไม่สำเร็จเช่นกัน
สวัสดีนักเทียบท่า Swarm!
ให้บริการโดย: be93b0268b1d