- 通过pipework给容器添加、配置、期望网络(这个就不说了)
- 如果在不重启容器的情况下,禁用容器的网络,然后在需要的时候在启动呢?
- 禁用容器网络: ifdown eth0
- 启用容器网络: ifup eth0
- 如果容器中没有ifup、ifdown、甚至没有ip命令呢?
- 通过nsenter -t pid-of-container -n (进入容器网络名字空间,但是文件系统还是宿主机的)
- 执行ip相关命令:
123ip link set eth0 upip addr add 172.16.0.3/24 dev eth0ip route add default via 172.16.0.1
注意: 这里使用的是ip命令,而不是ifconfig、ifup之类的,因为ip命令不参考本地文件系统中的相关配置,而后者会参考本地文件系统相关网络配置;因为我们需要ip命令,所以使用的是宿主机的文件系统,而不是容器的文件系统,所以在这里设置容器网卡的时候,不能使用ifconfig、ifup之类
- 在宿主机上使用ip netns exec 也能达到和使用nsenter相同的效果,但是似乎没有发现一个比较好的办法根据pid找到网络名字空间,所以还是nsenter更方便些