问题标签 [nsenter]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
docker - 使用 nsenter 访问没有附加运行容器的 docker 网络
我阅读的所有内容都使用使用该网络的容器的 PID。不幸的是,容器由于我认为是网络问题而死亡。我想进入网络命名空间并运行命令,而不是在该网络上运行不同的容器。
我的 /var/run/docker/netns/ 文件夹是空的。但是网络是一个桥接网络,出现在docker network ls
docker - docker特权模式和kubernetes特权容器的区别
以下两种情况下授予容器的权限有什么区别
- sudo docker run -d --privileged --pid=host alpine:3.8 tail -f /dev/null
- 使用 Kubernetes
在情况 1)
在情况 2)
显然,当特权容器直接使用 docker 实例化时,它能够看到主机的进程,但是当它使用 kubernetes 启动时,它只能看到少数进程。背后的原因是什么?
docker - 是否可以像执行到 docker 容器或在 pod 内运行的容器一样执行到 K8s pod?
是否可以像进入 docker 容器或在 pod 内运行的容器exec
一样进入 K8s exec
pod?
编辑 -
这个问题不是关于exec
ing 到 pod 中的容器。这是关于 pod 本身的。可能是不可能的,但这就是问题所在。所以停止将其标记为重复 -我们可以在 K8S 的 POD 中执行到容器中吗?
python-3.x - 在 Docker 容器中运行命令的 Python 脚本
我目前正在使用主机上的 Python 脚本为 Docker 容器自动执行命令。这个 Python 脚本现在构建并运行一个docker-compose
文件,将容器的命令写入docker-compose
文件及其Dockerfile
本身。
我想要做的是让 Python 脚本操作所有命令在容器内运行,所以如果我有不同的脚本要运行,我不会更改容器。我尝试了两种方法。
首先是os.system()
在 Python 脚本中运行命令,但是,这只适用于打开容器的 shell,os.system()
命令不会在 Docker 容器本身中执行代码。
第二种方法在 . 中使用 CMD Dockerfile
,但是,这是有限的,并且是硬编码到容器中的。如果我有多个脚本,我必须更改Dockerfile
,我不想要这个。我想要的是构建一个运行所有服务的默认容器,然后在主机上运行 Python 脚本以在容器上运行一系列命令。
我对 Docker 还很陌生,我认为在容器上运行脚本命令一定有一些我忽略的东西。我遇到的一种可能的解决方案是nsenter
. 这是一个可靠的解决方案吗?它是如何工作的?还是有更简单的方法?我也曾经docker-volume
将 python 文件复制到容器中以在构建时运行,但是,我仍然找不到从主机自动访问和运行这些 python 脚本的解决方案。
linux - 使用 nsenter 运行进程而不实际执行到容器中
细节
我想在容器上运行一个进程而不实际执行它。这是因为容器可能没有安装所有的包来运行命令。就像如果我想运行一个stress
命令,那么我可能在容器中找不到压力并且必须单独安装它。
我检查了几种可能性,我发现一种方法是使用nsenter
.
问题
我有一个 Nginx 容器,我想在其上运行压力过程而不实际执行它。
- 我获取了
pid
容器(1212)并尝试运行以下命令:
我检查了我得到了正确的主机名。但是,如果我使用-m
or-r
选项,那么我会得到。
现在,如果我对其进行压力处理:
它不会给容器 ID 为 1212 的目标容器提供 CPU 峰值,而是占用同一主机。
那么,有没有办法在不运行命令的情况下运行类似目标容器stress
或在目标容器上运行的进程?我也试图检查并为此。dd
exec
cgexec
cgroups
docker - 如何使在“nsenter”之后在 PID 命名空间中创建的进程可以被该命名空间杀死?
我有一个 docker 容器,但我不想用来docker exec
在这个容器中启动其他进程(这与 docker 守护进程在管道数百 GB 数据时无法正常工作有关)。所以相反,我更喜欢只使用nsenter
进入容器或启动命令。
具体来说:
这工作正常,除了我创建的进程不能被容器本身杀死 - 即使进程是 root,我也得到一个权限被拒绝。
要重现这一点:
它可能记录在联机帮助页的某个地方,但我无法弄清楚究竟是什么阻止了容器能够终止进程本身。
bash - 无法使用 bin/bash 进入容器命名空间
在一个终端中,我有一个正在运行的容器
在另一个终端中,我想在与上面正在运行的容器相同的命名空间中运行 bin/bash。为此,我遵循了以下步骤:
抓取正在运行的容器的PID
假设 PID 是 3386。当我运行时
我收到这个错误
但是,如果我更改bash
为sh
如下所示,它可以工作
我在 Centos 7,docker 版本 20.10.6 上,正如您所注意到的,我正在从bash image运行我的容器。我不明白为什么 bash 不起作用。有人可以解释一下吗?
更新
只是提供一点背景。我将我的 Centos 作为 Vagrant VM 运行。我曾经vagrant ssh
连接到两个终端。
流浪文件
docker - 如何使用 nsenter 实用程序从容器连接主机
在 ubuntu 中有一个叫做nsenter的实用程序。nsenter 是一个允许进入命名空间的小工具。它将进入您的 docker 容器。我想从 docker 容器控制主机。如何使用 nsenter 实用程序从容器连接主机?
docker - 为什么nsenter不能列出容器进程信息
step1:运行一个nginx容器
docker run -d -p 8000:80
step2:通过nsenter检查netowrk dev
nsenter -t $PID -n ip a
控制台打印
情况1:
但它不能以这种方式工作 nsenter -t $PID -p ps -ef
它打印了我的主机命名空间进程
案例2:
nsenter -t $PID -a ps -ef
案例 3:当我附加容器 bash 并安装 ps( docker exec -it $ContainerID bash
) 时,它会运行良好。( nsenter -t $PID -a ps -ef
)
我很困惑。
docker - 如何使用 nsenter 实用程序从 POD 连接和管理 Kubernetes 集群
我正在使用多节点 Kubernetes 集群。我正在使用以下 YAML 连接和管理主机。
但我想使用单个 POD 连接和管理多节点集群(集群中的任何其他节点)。