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 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_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 0
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever

[root@docker ~]# nsenter -t 18496  -p   ps
  PID 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.mfbz.cn/a/608753.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis框架笔记:基础信息

1.Mybatis介绍 MyBatis本是apache的一个开源项目iBatis&#xff0c;2010年这个项目由apache software foundation迁移到了google code&#xff0c;并且改名为MyBatis。2013年11月迁移到Github。 iBATIS一词来源于“internet”和“abatis”的组合&#xff0c;是一个基于Java的持…

AI赋能EasyCVR视频汇聚/视频监控平台加快医院安防体系数字化转型升级

近来&#xff0c;云南镇雄一医院发生持刀伤人事件持续发酵&#xff0c;目前已造成2人死亡21人受伤。此类事件在医院层出不穷&#xff0c;有的是因为医患纠纷、有的是因为打架斗殴。而且在每日大量流动的人口中&#xff0c;一些不法分子也将罪恶的手伸到了医院&#xff0c;实行扒…

健康知识集锦

页面 页面代码 <% layout(/layouts/default.html, {title: 健康知识管理, libs: [dataGrid]}){ %> <div class"main-content"><div class"box box-main"><div class"box-header"><div class"box-title"&g…

STM32 RTC的使用

注意 本文的总结基于STM32F103C8T6这款MCU&#xff1b;这款MCU的RTC没有硬件万年历功能&#xff0c;是通过RTC库的HAL_RTC_GetTime()函数将秒数转换成日期数据的&#xff1b; BCD格式 VS Binary格式 这个的BCD格式具体是指8421码&#xff0c;具体区别可以看如下代码&#xf…

《Python编程从入门到实践》day23

# 昨日知识点回顾 操控飞船移动发射子弹&#xff0c;删除屏幕之外的子弹 #今日知识点学习 第13章 外星人 13.1 项目回顾 项目添加新功能前审核既有代码&#xff0c;对混乱或低效的代码进行清理 13.2 创建第一个外星人 13.2.1 创建Alien类 # alien.py imp…

C++中的std::bind深入剖析

目录 1.概要 2.原理 3.源码分析 3.1._Binder分析 3.2._CALL_BINDER的实现 4.总结 1.概要 std::bind是C11 中的一个函数模板&#xff0c;用于创建一个可调用对象&#xff08;函数对象或者函数指针&#xff09;的绑定副本&#xff0c;其中一部分参数被固定为指定值&#xf…

摄像头参数笔记

DPI 每英寸多少像素点 例如&#xff1a; 例如要冲洗4*6英寸的照片&#xff0c;扫描精度必须是300dpi&#xff0c;那么文件尺寸应该是(4*300)*(6*300)1200像素*1800像素。 MP "MP"通常是"Megapixel"的缩写&#xff0c;意为“百万像素”。 2MP两百万像素…

YOLOv5改进 | 独家创新篇 | 利用MobileNetV4的UIB模块二次创新C3(全网独家首发)

一、本文介绍 本文给大家带来的改进机制是利用MobileNetV4的UIB模块二次创新C3&#xff0c;其中UIB模块来自2024.5月发布的MobileNetV4网络&#xff0c;其是一种高度优化的神经网络架构&#xff0c;专为移动设备设计。它最新的改动总结主要有两点&#xff0c;采用了通用反向瓶…

特征提取与深度神经网络(角点检测)

图像特征概述 图像特征表示是该图像唯一的表述&#xff0c;是图像的DNA HOG HOG &#xff08;Histogram of Oriented Gradients&#xff09;是一种用于目标检测的特征描述子。在行人检测中用的最多。HOG特征描述了图像中局部区域的梯度方向信息&#xff0c;通过计算图像中各个…

【教程向】从零开始创建浏览器插件(一)

第一步&#xff1a;创建一个自己的浏览器插件 在这篇博客中&#xff0c;我们将学习如何创建一个简单的浏览器插件。对于本教程&#xff0c;我们将以创建一个在浏览器中运行的基本插件为例&#xff0c;该插件能够通过点击插件图标来改变当前网页背景色。我们将使用Chrome扩展程…

关于 vs2019 c++ 20规范,STL 库提供的标准分配器 alloctor 及其 traits 及涉及分配器交换的全局函数 _Pocs

(1) 我们写 c 代码&#xff0c;使用 STL 库中的模板&#xff0c;很少自己写对象的分配器。用 STL 中的分配器也够用。研究 STL 中的分配器也可以为咱们自己写分配器提供参考。 咱们会遇到这样的场景&#xff0c;例如交换两个容器对象&#xff1a; list a ,b ; a .swap (b) ; 这…

CSS基础(CSS导入方式、选择器、属性)

层叠样式表&#xff08;Cascading Style Sheets&#xff0c;缩写为 CSS&#xff09;是一种样式表语言&#xff0c;用来描述 HTML 或 XML&#xff08;包括如 SVG、MathML 或 XHTML 之类的 XML 分支语言&#xff09;文档的呈现方式。CSS 描述了在屏幕、纸质、音频等其他媒体上的元…

Element ui input 限制只能输入数字,且只能有两位小数

<el-form-item label"整体进度&#xff1a;" prop"number"> <el-input v-model"formInline.number" input"handleInput" placeholder"百分比" clearable></el-input>% </el-form-item&g…

Re_Lasso

from sklearn.linear_model import LassoCV, Lasso import pandas as pd from sklearn.model_selection import train_test_split from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score from sklearn.model_selection import GridSearchCV# 读取数据…

游戏陪玩平台app小程序H5源码交付游戏陪玩接单软件游戏陪玩源码 陪玩小程序陪玩工作室运营模式陪玩管理系统游戏陪玩工作室怎么做

提供陪玩平台源码&#xff0c;陪玩系统源码&#xff0c;陪玩app源码&#xff0c;团队各部门配备齐全&#xff0c;分工明确&#xff0c;及时对接开发进度&#xff0c;保证开发效率 一、陪玩平台源码的功能介绍 1、派单大厅:陪玩系统源码的派单大厅内支持用户通过语音连麦的方式…

十四五”智慧城市:视频大数据汇聚系统2.0建设方案与特点分析

一、背景需求分析 随着科技的不断发展&#xff0c;智慧城市的建设已经成为城市发展的重要方向。视频汇聚系统作为智慧城市建设的重要组成部分&#xff0c;已经得到了广泛的应用和推广。视频汇聚系统是智慧城市中非常重要的组成部分&#xff0c;它利用摄像头和传感器技术来收集…

React使用Outlet实现路由跳转时局部刷新页面

Outlet是react-router-dom插件的一个组件&#xff0c;首先需要安装react-router-dom插件&#xff1a; cnpm i react-router-dom --save 官方文档 应该在父路由元素中用来渲染其子路由元素。这允许在渲染子路由时显示嵌套的 UI。如果父路由完全匹配&#xff0c;则将渲染子索引…

C++容器——stack

stack容器 C的std::stack容器是一个基于适配器模板类实现的容器适配器&#xff0c;它提供了一种后进先出的数据结构&#xff0c;即栈。 特点&#xff1a; 1.后进先出&#xff1a;元素在栈容器中按照后进先出的顺序管理&#xff0c;最后放入的元素将会最先被取出。 2.只能从栈…

OpenAI 希望您对其人工智能模型的行为发表意见

OpenAI 公布了一套高级“生活”指南&#xff0c;称为模型规范&#xff0c;该指南将定期更新&#xff0c;并确定其 AI 模型&#xff08;例如 ChatGPT 和 DALL-E&#xff09;在某些情况下的行为方式。 他们发布了初稿&#xff0c;并询问使用其模型的公众和利益相关者&#xff08…

nginx自动部署-跨操作系统

项目里面有一个需求&#xff0c;就是需要用让nginx进程提供给系统管理一个start,stop和getPid方法&#xff0c;这样系统管理可以自动拉起来nginx&#xff0c;达到自动部署的目的。离线部署同样适用 这样一来&#xff0c;我就需要提供windows版本linux不同版本的nginx源码包&am…
最新文章