Sto ora cercando di assegnare un IP statico 172.17.0.1 all'avvio di un contenitore Docker.
Uso la porta 2122 come porta ssh di questo contenitore in modo da lasciare che questo contenitore ascolti la porta 2122.
sudo docker run -i -t -p 2122:2122 ubuntu
Questo comando eseguirà un contenitore Docker con un IP casuale come 172.17.0.5, ma devo assegnare un IP specifico al contenitore.
Il seguente script di shell è ciò a cui faccio riferimento la documentazione di Docker nelle impostazioni di rete avanzate.
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
Questo script di shell assegnerà un IP statico 172.17.0.1 e si collegherà alla fine del mondo. Ma ogni volta che provo a inviare ssh a questo contenitore dal mio locale, non ha funzionato. Qual è il problema che forse ho incontrato?