ตอนนี้ฉันกำลังพยายามกำหนด IP แบบคงที่ 172.17.0.1 เมื่อเริ่มต้นคอนเทนเนอร์นักเทียบท่า
ฉันใช้พอร์ต 2122 เป็นพอร์ต ssh ของคอนเทนเนอร์นี้เพื่อที่ฉันจะให้คอนเทนเนอร์นี้ฟังพอร์ต 2122
sudo docker run -i -t -p 2122:2122 ubuntu
คำสั่งนี้จะเรียกใช้ Docker container ที่มี IP แบบสุ่มเช่น 172.17.0.5 แต่ฉันต้องกำหนด IP เฉพาะให้กับคอนเทนเนอร์
เชลล์สคริปต์ต่อไปนี้คือสิ่งที่ฉันอ้างอิงเอกสารนักเทียบท่าในการตั้งค่าเครือข่ายขั้นสูง
pid=$(sudo docker inspect -f '{{.State.Pid}}' <container_name> 2>/dev/null)
sudo rm -rf /var/run/netns/*
sudo ln -s /proc/$pid/ns/net /var/run/netns/$pid
sudo ip link add A type veth peer name B
sudo brctl addif docker0 A
sudo ip link set A up
sudo ip link set B netns $pid
sudo ip netns exec $pid ip link set eth0 down
sudo ip netns exec $pid ip link delete eth0
sudo ip netns exec $pid ip link set dev B name eth0
sudo ip netns exec $pid ip link set eth0 address 12:34:56:78:9a:bc
sudo ip netns exec $pid ip link set eth0 down
sudo ip netns exec $pid ip link set eth0 up
sudo ip netns exec $pid ip addr add 172.17.0.1/16 dev eth0
sudo ip netns exec $pid ip route add default via 172.17.42.1
เชลล์สคริปต์นี้จะกำหนด IP คงที่ 172.17.0.1 และเชื่อมโยงไปยังโลกที่ดี แต่เมื่อใดก็ตามที่ฉันพยายามที่จะ ssh ภาชนะจากท้องถิ่นของฉันมันไม่ทำงาน ฉันอาจพบปัญหาอะไร