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




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

2022-07-20 19:30:29 网络知识 官方管理员

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

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

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

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

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

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

#ipnetnsexec$container_idsh

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

#nsenter-t$pid-nsh

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

发表评论:

最近发表
网站分类
标签列表