Saya sekarang mencoba untuk menetapkan IP 172.17.0.1 statis ketika wadah Docker dimulai.
Saya menggunakan port 2122 sebagai port ssh wadah ini sehingga saya membiarkan wadah ini mendengarkan port 2122.
sudo docker run -i -t -p 2122:2122 ubuntu
Perintah ini akan menjalankan wadah Docker dengan IP acak seperti 172.17.0.5, tapi saya perlu menetapkan IP tertentu ke wadah.
Script shell berikut adalah apa yang saya rujuk dokumentasi Docker dalam pengaturan jaringan lanjutan.
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
Skrip shell ini akan menetapkan IP statis 172.17.0.1 dan tautan ke denda dunia. Tetapi setiap kali saya mencoba ssh ke wadah ini dari lokal saya, itu tidak berhasil. Apa masalah yang mungkin saya temui?