经常会碰到在容器中无法使用ping、telnet等命令的情况,这种情况,可以在容器对应的network namespace下执行ping、telnet命令,只要节点上有这些命令即可:
方法一(使用nsenter命令):
1、获取容器pid,执行下面的命令,获取pid的值
docker inspect [容器名]
2、进入容器对应的network namespace
nsenter -n -t [容器pid]
3、执行ping、telnet操作
ping x.x.x.x 或者telnet x.x.x.x [port]
4、退出network namespace
exit
方法二(使用ip命令)
1、获取容器pid,执行下面的命令,获取pid的值
docker inspect [容器名]
2、创建network namespace软连接
ln -s /proc/[容器pid]/ns/net /var/run/netns/[容器名]
3、让命令在容器的network namespace下执行
ip netns exec [容器名] ifconfig
ip netns exec [容器名] ping 192.168.1.1