Ahora estoy tratando de asignar una IP estática 172.17.0.1 cuando se inicia un contenedor Docker.
Utilizo el puerto 2122 como el puerto ssh de este contenedor, de modo que dejo que este contenedor escuche el puerto 2122.
sudo docker run -i -t -p 2122:2122 ubuntu
Este comando ejecutará un contenedor Docker con una IP aleatoria como 172.17.0.5, pero necesito asignar una IP específica al contenedor.
El siguiente script de shell es lo que hago referencia a la documentación de Docker en la configuración avanzada de red.
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
Este script de shell asignará una IP estática 172.17.0.1 y se vinculará al mundo bien. Pero cada vez que trato de enviar a este contenedor desde mi local, no funcionó. ¿Cuál es el problema que posiblemente conocí?