Docker nsenter 命令使用

查看容器对应宿主机上面的pid,容器技术的实质是进程,并没有完整的操作系统,就相当于在主机上面fork了一个子进程,通过docker daemon去fork一个子进程,这个子进程是可以在主机上面看到其pid的。 

$ docker inspect -f {{.State.Pid}} 容器名或者容器id 
 
如下:
$ docker inspect -f {{.State.Pid}}  7b7af641a02d
20560
$ docker inspect -f {{.State.Pid}}  consul_client
20560
输入该命令便进入到容器中

$ nsenter --target 上面查到的进程id --mount --uts --ipc --net --pid 

解释nsenter指令中进程id之后的参数的含义: 
* –mount参数是进去到mount namespace中  (文件系统)
* –uts参数是进入到uts namespace中  (主机名与域名)
* –ipc参数是进入到System V IPC namaspace中  (信号量、消息队列和共享内容)
* –net参数是进入到network namespace中   (网络设备、网络栈、端口)
* –pid参数是进入到pid namespace中    (进程编号)
* –user参数是进入到user namespace中 (用户和用户组)

PID=$(docker inspect --format "{{ .State.Pid }}" <container>)
$ nsenter --target $PID --mount --uts --ipc --net --pid#查看容器对应宿主机上面的pid,容器技术的实质是进程,并没有完整的操作系统,就相当于在主机上面fork了一个子进程,通过docker daemon去fork一个子进程,这个子进程是可以在主机上面看到其pid的。
[root@docker ~]# docker inspect 37d084d8e21b | grep -i  pid"Pid": 18496,"PidMode": "","PidsLimit": null,
[root@docker ~]# ps -ef | grep 18496
root     18496 18476  0 15:34 pts/0    00:00:00 sh

-p 是pid namesapce    -n是network namespace,在主机上面通过nsenter去敲ip a,ps命令和在容器内部敲的命令返回结果是一样的。 

[root@docker ~]# nsenter -t 18496  -n ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
44: eth0@if45: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0valid_lft forever preferred_lft forever[root@docker ~]# nsenter -t 18496  -p   psPID TTY          TIME CMD
18648 pts/1    00:00:00 sh
20436 pts/1    00:00:00 bash
21368 pts/1    00:00:00 nsenter
21369 pts/1    00:00:00 bash
21529 pts/1    00:00:00 nsenter
21530 pts/1    00:00:00 ps

容器看到的是可以通过在主机上面nsenter看到的。这是日常去调试容器里面进程应用的一个法宝!

有些时候容器里面要做一些debug,缺一些工具,可以登入到主机上面进入到容器的namespace里面去看其网络配置,看其端口监听。这样就能够知道网络连接的状态是怎么样的。 

由于使用DOCKER的时候,ESTABLISHED连接不会出现在netstat中,在运行中的docker容器中列出打开的套接字的方法 ,查找docker的进程号:

$ sudo nsenter -t <Pid> -n netstat | grep ESTABLISHED 示例:
$ nsenter -t 1829 -n netstat |grep ESTABLISHED 
tcp        0      0 localhost:60353         localhost:epmd          ESTABLISHED
tcp        0      0 localhost:epmd          localhost:60353         ESTABLISHED
tcp        0      0 localhost.localdo:15672 192.168.56.1:59679      ESTABLISHED
tcp6       0      0 172.17.0.2:amqp         192.168.56.1:59898      ESTABLISHED
tcp6      21      0 172.17.0.2:amqp         192.168.56.1:59571      ESTABLISHED[root@jenkins dockerfile]# nsenter -t 14632 -n ping www.baidu.com
^C[root@jenkins dockerfile]# nsenter -t 14632 -n nslookup www.baidu.com
^C[root@jenkins dockerfile]# nsenter -t 14632 -n curl 127.0.0.1:8080
{"timestamp":"2024-05-09T06:29:54.346+00:00","status":404,"error":"Not Found","message":"","path":"/"}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/11034.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

可视化大屏:城市治理方向,三维地图那是相当震撼呀。

随着城市化进程的加快&#xff0c;城市治理变得越来越复杂&#xff0c;需要大量的数据和信息来支持决策和管理。在这个背景下&#xff0c;可视化大屏作为一种新兴的信息展示工具&#xff0c;正逐渐在城市治理中发挥着重要作用。 首先&#xff0c;可视化大屏能够将庞大的数据和信…

kettle从入门到精通 第五十九课 ETL之kettle 邮件发送多个附件,使用正则轻松解决

想真正学习或者提升自己的ETL领域知识的朋友欢迎进群&#xff0c;一起学习&#xff0c;共同进步。若二维码失效&#xff0c;公众号后台加我微信入群&#xff0c;备注kettle。 问题场景&#xff1a; 一个朋友说他用kettle将生成好的多个文件&#xff08;a.xls和b.xls&#xff0…

【LeetCode算法】1768. 交替合并字符串

提示&#xff1a;此文章仅作为本人记录日常学习使用&#xff0c;若有存在错误或者不严谨得地方欢迎指正。 文章目录 一、题目二、思路三、解决方案 一、题目 给你两个字符串 word1 和 word2 。请你从 word1 开始&#xff0c;通过交替添加字母来合并字符串。如果一个字符串比另…

代码随想录算法训练营第四十九天|123.买卖股票的最佳时机III,188.买卖股票的最佳时机IV

目录 123.买卖股票的最佳时机III思路代码 188.买卖股票的最佳时机IV思路代码 123.买卖股票的最佳时机III 题目链接&#xff1a;123.买卖股票的最佳时机III 文档讲解&#xff1a;代码随想录 视频讲解&#xff1a;动态规划&#xff0c;股票至多买卖两次&#xff0c;怎么求&#x…

图论专题训练

leecode 547 并查集 class Solution { public:int findCircleNum(vector<vector<int>>& isConnected) {ini();int len isConnected.size();for(int i0;i<len;i){for(int j0;j<len;j)if(isConnected[i][j]){unio(i,j);}}int ans 0;for(int i0;i<len;…

爱分析基于杭州云器Lakehouse实现成本最优的一体化管理,新一代数据平台的建设方式

导读 1.当前&#xff0c;企业在大数据和数据中台建设上取得成果&#xff0c;但数据开发管理仍具挑战性&#xff08;成本、效率、复杂度&#xff09;。 2.随数据平台领域成熟&#xff0c;厂商应结合自身需求&#xff0c;重新思考“基于开源自建数据平台”的重资产模式与“购买…

js: async/await

当你使用 async 关键字定义一个函数时&#xff0c;这个函数会返回一个 Promise。而当你在这个函数内部使用 await 关键字时&#xff0c;你实际上是在“等待”一个 Promise 的解决&#xff08;fulfilled&#xff09;或拒绝&#xff08;rejected&#xff09;。在等待期间&#xf…

Windows环境下编译 aom 源码详细过程

AV1 AV1是一种开源的视频编码格式&#xff0c;由开放媒体联盟&#xff08;AOMedia Video 1&#xff0c;简称AOMedia或AOM&#xff09;开发。AV1旨在提供比现有的视频编码格式如H.264和H.265更好的压缩效率&#xff0c;同时保持或提高视频质量。AV1的编码效率显著高于H.264&…

小猫咪邮件在线发送系统源码,支持添加附件

一款免登录发送邮件&#xff0c;支持发送附件&#xff0c;后台可添加邮箱,前台可选择发送邮箱 网站数据采取本地保存&#xff0c;所以使用前请给网站修改权限&#xff0c;否则很多功能将无法使用 安装教程&#xff1a; 1.上传服务器或者主机 2.登录后台&#xff0c;添加发送…

docker是干嘛的?

Docker是一个开源的平台&#xff0c;用于开发、交付和运行应用程序。它利用容器化技术&#xff0c;将应用程序及其依赖项打包到一个称为容器的可移植容器中。这使得应用程序能够在几乎任何环境中运行&#xff0c;而不受所运行的操作系统和硬件的限制。Docker的主要优点包括&…

MathType永久激活版写毕业论文必备神器以及破解版下载图文教程(附mathtype7镶嵌到word步骤)

前言 由于临近暑假&#xff0c;大学生和研究生都需要写自己的论文。使用的工具叫做MathType&#xff0c;它是加拿大的公司开发的&#xff0c;今天给大家带来的是Win和Mac版Mathtype最新破解版。 自从Mathtype7的发布&#xff0c;很多的老师和学生都不知道它从哪里下载和激活&…

测试萌新三天速通python基础(三)self参数,魔法方法,封装,继承,多态,json

python基础 类和对象⾯向对象代码的步骤类的设计 self 参数魔法⽅法初始化⽅法____init__________str_____ ⽅法 封装继承重写(override)多态对象 属性 方法静态方法文件⽂件操作打开⽂件的⽅式json ⽂件异常 类和对象 类: 是对具有相同特征或者⾏为的事物的⼀个统称, 是抽象的…

社区送水小程序软件开发

uni-app框架&#xff1a;使用Vue.js开发跨平台应用的前端框架&#xff0c;编写一套代码&#xff0c;可编译到Android、小程序等平台。 框架支持:springboot/Ssm/thinkphp/django/flask/express均支持 前端开发:vue.js 可选语言&#xff1a;pythonjavanode.jsphp均支持 运行软件…

vue+springboot项目服务器部署

①创建一台opencloud8的腾讯云服务器 ②用xshell连接服务器 ③vue中新建.env.development配置文件 .env.development: VUE_APP_BASEURLhttp://localhost:9090 .env.production: VUE_APP_BASEURLhttp://服务器ip:9090 ④修改main.js import Vue from vue import App from ./A…

在数据分析中所需要运用到的概率论知识

数据分析 前言一、总体二、样本三、统计抽样抽取的基本准则 四、随机抽样抽签法随机数法 五、分层抽样六、整群抽样七、系统抽样八、统计参数常用的分布函数参数 九、样本统计量十、样本均值和样本方差十一、描述样本集中位置的统计量样本均值样本中位数样本众数 十二、描述样本…

【C++】手搓读写properties文件源码

【C】手搓读写properties文件源码 参考文章 思路 properties文件实际上就是键值对的一种形式&#xff0c;用等号连接键和值。c中和键值对最贴切的就是STL中的map了。所以我使用map作为properties的实际内存存储&#xff0c;同时为了方便使用&#xff0c;另外多一个set类型的字段…

重写muduo之TcpConnection

目录 1、 TcpConnection.h 2、 TcpConnection.cc 1、 TcpConnection.h TcpConnection底层绑定&#xff08;管理&#xff09;了一个Channel&#xff0c;Channel有事件被Poller通知后&#xff0c;会调用相应的回调&#xff0c;这些回调也是TcpConnection中包含的方法&#xff0c…

泰达克仿钻点水晶饰品包装印刷防滑UV胶特性及应用场景

仿钻点UV滴胶是一种特殊的胶水 常用于模拟钻石的效果 它是一种透明的胶水 具有高光泽度和折射率 可以在物体表面形成类似钻石的亮闪效果 仿钻点UV滴胶通常由紫外线固化胶组成 需要通过紫外线照射来固化和硬化 它具有以下特点&#xff1a; 1. 透明度&#xff1a;仿钻点UV滴胶具有…

AndroidStudio中如何配置共享变量,以便于方便配置共享

文章目录 一、定义共享变量二、引入通用配置三、在Module中使用这个通用配置 Android studio Gradle配置通用配置 在使用Android studio Android开发中Gradle通常会遇到很多相同的配置例如在不同的module中都要配置相同的compileSdkVersion、buildToolsVersion等 这时我们可以…

BGP第二篇(bgp邻居状态及影响邻居建立的因素)

1、bgp邻居状态 BGP对等体的交互过程中存在6种状态机&#xff1a; 空闲&#xff08;Idle&#xff09; 连接&#xff08;Connect&#xff09; 活跃 &#xff08;Active&#xff09; Open报文已发送&#xff08;OpenSent&#xff09; Open报文已确认&#xff08;OpenConfirm&…