[转帖]nsenter使用

nsenter,使用 · 浏览次数 : 0

小编点评

**nsenter 工具简介** nsenter 是一个用于进入容器内部的一个命令,可以自己选择加载容器的那些 namespaces。它可以进入 mount、uts、ipc、pid、user 和 network namespace,指定根目录和工作目录。 **优势:** * 排查 Docker container 中的网络连接性问题。 * 通过访问容器的命名空间,可以进行调试。 * 可进入特定 namespace 中执行命令。 **使用说明:** 1. 获取 nsenter 的官方代码:`yum install util-linux -y2` 2. 使用 `nsenter --help` 命令查看用法。 3. 使用 `nsenter -t ` 命令进入容器,指定容器的 PID。 4. 使用 `nsenter -m -u -i -n -p` 命令输入该命令进入容器。 **示例:** ``` nsenter -t 4552 -u -i -n -p ``` 这将进入容器 ID 为 4552 的网络命名空间,并使用宿主机的 namespace 进行排错。 **其他选项:** * `-r`: 将 SELinux 上下级。 * `-h`: 显示帮助信息并退出。 * `-V`: 输出版本信息并退出。

正文

https://www.cnblogs.com/edeny/p/15247306.html

这个工具应该不错. 

 

介绍

nsenter是用来进入容器内部的一个命令,它的优势之处在于可以自己选择加载容器的那些namespaces。

说直白一点就是 排查docker容器可以具备inux宿主命令的的方法。

一典型的用途容器网络命令空间。容器为了轻量级,不包含基础的命令,如说 ip address,ping,telnet,ss,tcpdump 等,给调试容器网络带来很大困扰:只能通过 docker inspect ContainerID 获取容器IP,无法测试和其他网络的连通性。这时使用nsenter命令仅进入该容器的网络命名空间,使用宿主机的命令调试容器网络。nsenter也可以进入 mnt, uts, ipc, pid, user 命令空间,指定根目录和工作目录。

namespace是Linux中一些进程的属性的作用域,使用命名空间,可以隔离不同的进程。

1、nsenter的安装

官方源码,下载地址

yum install util-linux -y

2、nsenter的使用

复制代码
[root@localhost ~]# nsenter --help

用法:
 nsenter [options] <program> [<argument>...]

Run a program with namespaces of other processes.

选项:
 -t, --target <pid>     要获取名字空间的目标进程
 -m, --mount[=<file>]   enter mount namespace
 -u, --uts[=<file>]     enter UTS namespace (hostname etc)
 -i, --ipc[=<file>]     enter System V IPC namespace
 -n, --net[=<file>]     enter network namespace
 -p, --pid[=<file>]     enter pid namespace
 -U, --user[=<file>]    enter user namespace
 -S, --setuid <uid>     set uid in entered namespace
 -G, --setgid <gid>     set gid in entered namespace
     --preserve-credentials do not touch uids or gids
 -r, --root[=<dir>]     set the root directory
 -w, --wd[=<dir>]       set the working directory
 -F, --no-fork          执行 <程序> 前不 fork
 -Z, --follow-context   set SELinux context according to --target PID

 -h, --help     显示此帮助并退出
 -V, --version  输出版本信息并退出
复制代码

 中文说明

复制代码
 --mount参数是进去到mount namespace中
 --uts参数是进入到uts namespace中
 --ipc参数是进入到System V IPC namaspace中
 --net参数是进入到network namespace中
 --pid参数是进入到pid namespace中
 --user参数是进入到user namespace中
复制代码

nsenter命令要获取到docker容器的进程,然后再使用nsenter工具进去到docker容器中

# docker inspect -f {{.State.Pid}} 容器名或者容器id   #查询容器的PID
# nsenter -t 容器PID(容器名)  -m -u -i -n -p  #输入该命令进入容器

示例

# 起一个Nginx镜像
[root@localhost ~]# docker run -p 80:80 -d --name nginx nginx
# 查看pid
[root@localhost ~]# docker inspect -f {{.State.Pid}} nginx
4552

# 进入容器,使用宿主机的namespace进行排错,就可以排错linux宿主机一样进行容器排错了。

nsenter -t 4552 -u -i -n -p

 end...

与[转帖]nsenter使用相似的内容:

[转帖]nsenter使用

https://www.cnblogs.com/edeny/p/15247306.html 这个工具应该不错. 介绍 nsenter是用来进入容器内部的一个命令,它的优势之处在于可以自己选择加载容器的那些namespaces。 说直白一点就是 排查docker容器可以具备inux宿主命令的的方法。

[转帖]nsenter 工具的使用

一、背景 对于运行在后台的docker容器,我们经常需要做的事情是进入到容器中,docker为我们提供了docker exec 、docker attach 命令,并且还提供了nsenter工具,外部工具供我们使用。 docker attach存在的问题是:当多个窗口同时attach到同一个容器时,

[转帖]使用 nsenter、dig 和 tcpdump 调试 Kubernetes 网络问题

https://zhuanlan.zhihu.com/p/410217354 使用 nsenter、dig 和 tcpdump 调试 Kubernetes 网络问题 作为 Kubernetes 管理员,我经常发现自己需要调试应用程序和系统问题。我遇到的大多数问题都可以通过 Grafana 仪表板和

[转帖]

Linux ubuntu20.04 网络配置(图文教程) 因为我是刚装好的最小系统,所以很多东西都没有,在开始配置之前需要做下准备 环境准备 系统:ubuntu20.04网卡:双网卡 网卡一:供连接互联网使用网卡二:供连接内网使用(看情况,如果一张网卡足够,没必要做第二张网卡) 工具: net-to

[转帖]

https://cloud.tencent.com/developer/article/2168105?areaSource=104001.13&traceId=zcVNsKTUApF9rNJSkcCbB 前言 Redis作为高性能的内存数据库,在大数据量的情况下也会遇到性能瓶颈,日常开发中只有时刻

[转帖]ISV 、OSV、 SIG 概念

ISV 、OSV、 SIG 概念 2022-10-14 12:29530原创大杂烩 本文链接:https://www.cndba.cn/dave/article/108699 1. ISV: Independent Software Vendors “独立软件开发商”,特指专门从事软件的开发、生产、

[转帖]Redis 7 参数 修改 说明

2022-06-16 14:491800原创Redis 本文链接:https://www.cndba.cn/dave/article/108066 在之前的博客我们介绍了Redis 7 的安装和配置,如下: Linux 7.8 平台 Redis 7 安装并配置开机自启动 操作手册https://ww

[转帖]HTTPS中间人攻击原理

https://www.zhihu.com/people/bei-ji-85/posts 背景 前一段时间,公司北京地区上线了一个HTTPS防火墙,用来监听HTTPS流量。防火墙上线之前,邮件通知给管理层,我从我老大那里听说这个事情的时候,说这个有风险,然后意外地发现,很多人原来都不知道HTTPS防

[转帖]关于字节序(大小端)的一点想法

https://www.zhihu.com/people/bei-ji-85/posts 今天在一个技术群里有人问起来了,当时有一些讨论(不完全都是我个人的观点),整理一下: 为什么网络字节序(多数情况下)是大端? 早年设备的缓存很小,先接收高字节能快速的判断报文信息:包长度(需要准备多大缓存)、地

[转帖]awk提取某一行某一列的数据

https://www.jianshu.com/p/dbcb7fe2da56 1、提取文件中第1列数据 awk '{print $1}' filename > out.txt 2、提取前2列的文件 awk `{print $1,$2}' filename > out.txt 3、打印完第一列,然后打