【发布时间】:2018-11-15 13:25:30
【问题描述】:
我阅读的所有内容都使用使用该网络的容器的 PID。不幸的是,容器由于我认为是网络问题而死亡。我想进入网络命名空间并运行命令,而不是在该网络上运行不同的容器。
我的 /var/run/docker/netns/ 文件夹是空的。但是网络是一个桥接网络,出现在docker network ls
【问题讨论】:
标签: docker networking namespaces nsenter
我阅读的所有内容都使用使用该网络的容器的 PID。不幸的是,容器由于我认为是网络问题而死亡。我想进入网络命名空间并运行命令,而不是在该网络上运行不同的容器。
我的 /var/run/docker/netns/ 文件夹是空的。但是网络是一个桥接网络,出现在docker network ls
【问题讨论】:
标签: docker networking namespaces nsenter
当容器启动时,它会获得自己的网络命名空间,除非它以--net=none 或--net=host 启动。一旦容器停止,这个命名空间就会被删除。因此,一旦它不运行,您将无法调试与该容器网络相关的任何内容。
您需要检查容器日志以了解容器退出的原因。
这里有一些相关的示例命令:
pid=`docker inspect -f '{{.State.Pid}}' $container_id`
mkdir -p /var/run/netns
rm -f /var/run/netns/$container_id
ln -sv /proc/$pid/ns/net /var/run/netns/$container_id
nsenter -m -t `pidof dockerd` nsenter --net=/var/run/docker/netns/4-4ef4272ac1 ip link
【讨论】:
docker network create foo 时,实际上做了什么?如果容器正在运行,我只能进入使用foo 的命名空间?
ip addr 检查。当容器启动时,它使用veth 连接到网桥。