LinQ
发布于 2023-11-08 / 12 阅读 / 0 评论 / 0 点赞

nsenter魔法棒

有时候Docker容器中缺少需要的软件。比如 curl,wget,ifconfig,ip,tcpdump 等基础软件包,什么都干不了,很是让人抓狂。

面对这种容器镜像,定位问题就会很困难,因为你进入容器后,想执行命令还得重新安装各种基础软件,非常麻烦。

 

这个时候,我们要拿起“nsenter”这个根魔法棒,在主机上上面挥舞起来。

ns-enter,顾名思义,就是「进入各种namespace」,即nsenter命令可以进入到指定目标进程的ns视角。

所以nsenter可以站在指定进程的“视角”看世界,本文重点关注进入目标进程的“网络ns”视角,即站在「容器中的进程视角」看待容器里面的网络世界,并在那个视角中执行命令。

 

(1) 找到目标进程PID

docker inspect xxx

[root@tsjsdbd ubuntu]# docker inspect 8402d89fe04a

[

    {

        "Id": "8402d89fe04a7e161faf8a01a86c47f8402d4c8d7207b6897d8e6d661d670df4",

        "State": {

            "Status": "running",

            "Pid": 18751,

            "ExitCode": 0,

            "Error": "",

            "StartedAt": "2023-05-10T03:12:19.221460059Z",

            "FinishedAt": "0001-01-01T00:00:00Z"

        },

(2)直接执行特定的cli命令

nsenter -n -t 822647 ifconfig

 

(3)进入容器视角,进行交互式cli

nsenter -n -t 822647
exit


评论