Tôi có kịch bản bên dưới - 3x máy ảo Vagrant được quay từ Vagrantfile bên dưới, khởi động và chạy (hiển thị trong Oracle VirtualBox).
Tôi đã đăng nhập vào docker1, loại mạng là "NAT", chuyển tiếp cổng được sử dụng (Khách:8080, Máy chủ:8080).
Tôi có thể truy cập trang từ localhost:8080 & 127.0.0.1:8080 & 127.0.1.1:8080. Tuy nhiên, tôi không có quyền truy cập qua IP (192.168.99.101:8080 là "Mất quá nhiều thời gian để phản hồi" và không thể truy cập được).
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", đường dẫn: "docker-setup.sh"
docker1.vm.provision "shell", đường dẫn: "other-steps.sh"
docker1.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "1536"]
chấm dứt
chấm dứt
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", đường dẫn: "docker-setup.sh"
docker2.vm.provision "shell", đường dẫn: "other-steps.sh"
docker2.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "1536"]
chấm dứt
chấm dứt
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", đường dẫn: "docker-setup.sh"
docker3.vm.provision "shell", đường dẫn: "other-steps.sh"
docker3.vm.provider :virtualbox làm |vb|
vb.customize ["modifyvm", :id, "--memory", "1536"]
chấm dứt
chấm dứt
chấm dứt
tệp docker-setup.sh bên dưới:
#!/bin/bash
echo "* Thêm kho lưu trữ Docker ..."
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
tiếng vang "* Cài đặt Docker ..."
cài đặt dnf -y docker-ce docker-ce-cli containerd.io
echo "* Kích hoạt và khởi động Docker ..."
systemctl kích hoạt docker
docker khởi động systemctl
echo "* Thêm người dùng lang thang vào nhóm docker ..."
usermod -aG docker lang thang
tệp other-steps.sh bên dưới:
#!/bin/bash
tiếng vang "* Thêm máy chủ ..."
tiếng vang "192.168.99.101 docker1.do1.lab docker1" >> /etc/hosts
tiếng vang "192.168.99.102 docker2.do1.lab docker2" >> /etc/hosts
tiếng vang "192.168.99.103 docker3.do1.lab docker3" >> /etc/hosts
echo "* Cài đặt gói bổ sung ..."
cài đặt dnf -y cây jq git nano
echo "* Tường lửa - swarm - mở cổng ..."
tường lửa-cmd --add-port=2377/tcp -- Permanent
tường lửa-cmd --add-port=4789/udp -- Permanent
tường lửa-cmd --add-port=7946/tcp -- Permanent
tường lửa-cmd --add-port=7946/udp -- Permanent
echo "* Tường lửa - ứng dụng - mở cổng 8080 ..."
tường lửa-cmd --add-port=8080/tcp -- Permanent
tường lửa-cmd --reload
Các mạng dưới đây:
[vagrant@docker1 etc]$ mạng docker ls
MẠNG ID TÊN PHẠM VI TRÌNH ĐIỀU KHIỂN
f2351cd29061 cầu cầu địa phương
f91a21d83931 cầu docker_gwbridge cục bộ
c5fc9aedf330 máy chủ lưu trữ cục bộ
đám lớp phủ xâm nhập oc2i4c2czira
50fe2b72573c không null cục bộ
Nội dung etc/hosts ở đây:
[vagrant@docker1 etc]$ máy chủ mèo
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
Lệnh được sử dụng để quay một thùng chứa là lệnh bên dưới:
docker container run -d --name web -p 8080:80 -e APP_MODE='test' swarm-app
Tôi đã nghiên cứu rất nhiều bài viết có cùng vấn đề nhưng vẫn không thể tìm ra giải pháp. Tôi cho rằng điều này có thể liên quan đến độ phân giải DNS của địa chỉ IP được đề cập?
Cập nhật: Tôi đang mở bằng CMD thông qua các địa chỉ bên dưới (Máy chủ chuyển tiếp cổng: 8080, Khách: 80), nếu có bất kỳ thông tin nào cần cung cấp, vui lòng cho tôi biết:
`[vagrant@docker1 ~]$ curl http:/localhost:8080 -> không mở trong trình duyệt
Xin chào bầy Docker!
Được phục vụ bởi: be93b0268b1d[vagrant@docker1 ~]$ cuộn tròn http://172.17.0.2:80 -> đây là IP vùng chứa - không mở qua trình duyệt
Xin chào bầy Docker!
Được phục vụ bởi: be93b0268b1d[vagrant@docker1 ~]$ cuộn tròn http://192.168.99.101:8080 -> đây là IP máy chủ Docker được cho là mở thông qua trình duyệt - cũng không thành công
Xin chào bầy Docker!
Được phục vụ bởi: be93b0268b1d