经常会碰到在容器中无法使用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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐