Ich versuche jetzt, eine statische IP 172.17.0.1 zuzuweisen, wenn ein Docker-Container gestartet wird.
Ich verwende Port 2122 als SSH-Port dieses Containers, damit dieser Container Port 2122 abhört.
sudo docker run -i -t -p 2122:2122 ubuntu
Dieser Befehl führt einen Docker-Container mit einer zufälligen IP wie 172.17.0.5 aus, aber ich muss dem Container eine bestimmte IP zuweisen.
Das folgende Shell-Skript ist das, worauf ich in den erweiterten Netzwerkeinstellungen in der Docker-Dokumentation verweise.
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
Dieses Shell-Skript weist eine statische IP 172.17.0.1 zu und verlinkt auf die Weltstrafe. Aber wann immer ich versuche, von meinem lokalen zu diesem Container zu ssh, hat es nicht funktioniert. Was ist das Problem, das ich möglicherweise getroffen habe?