您当前的位置:首页 > 文章摘抄 > 正文

docker进入容器命令(docker exec无法进入容器的解决方法)

docker进入容器命令(docker exec无法进入容器怎么办)(1)

当Docker容器启动后如果不是主机模式,那么将会在宿主机上面创建一个新的网络命名空间。容器有独立的网络空间,在这个网络空间中有独立的网卡和协议栈。

如果容器因为网络故障无法启动,譬如容器启动会链接etcd,如果连不上则会导致无法启动。因为容器无法启动,就不能通过docker exec进入容器网络空间排查问题。

由于容器网络空间没有链接到“/var/run/netns”下,所以没法通过ip netns命令管理,为了方便排查问题,可以将容器的网络命令空间链接到“/var/run/netns”下。具体命令如下:

# pid=$(docker inspect -f '{{.State.Pid}}' ${container_id})# mkdir -p /var/run/netns/# ln -sfT /proc/$pid/ns/net /var/run/netns/$container_id

链接完后有两种方式。方法一是通过ip netns命令进入容器,排查问题。

# ip netns exec $container_id sh

除此之外,也可以通过方法二nsenter命令,也可以进入容器网络空间

# nsenter -t $pid -n sh

在k8s的环境中,也经常会遇到这个问题,为此k8s提供了Debug容器,通过kubectl debug命令,启动一个debug容器,挂载到业务容器的网络空间中。相当于docker run -net的方式启动一个debug容器,和业务容器共享网络空间。


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: 如何做百度百科(为什么要做百度百科)

下一篇: 退伍军人就业(未来50年,适合退役军人就业的新方向之二)



推荐阅读