问题标签 [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.

0 投票
4 回答
30666 浏览

linux - CoreOS - 通过 PID 获取 docker 容器名称?

我有一个 PID 列表,我需要获取他们的 docker 容器名称。另一个方向很容易......通过图像名称获取 docker 容器的 PID:

知道如何通过 PID 获取名称吗?

0 投票
3 回答
7538 浏览

docker - 如何在正在运行的 docker 容器中动态编辑文件

背景

我已经构建了一个 npm 服务器(sinopia) docker 映像(https://github.com/feuyeux/docker-atue/blob/master/docker-images/feuyeux_sinopia.md),并且在 CMD 行中,它将运行启动.sh 每次生成容器时。

这个 shell 将动态创建一个 yaml 文件。

问题

我希望我可以在容器运行时编辑这个 config.yaml,因为我希望内容应该按需更改。

在此处输入图像描述 看快照照片

如上图,第一行运行了一个sinopia容器,在这个容器中,有/opt/sinopia/config.yaml。但我不知道如何获取这个正在运行的容器并编辑和检查这个文件。如果我按照sinopia-ls的行进行操作,则会运行一个新容器,而不是之前运行的容器。

多谢你们!

回答(详情请看下面我接受的内容)

0 投票
1 回答
1106 浏览

linux - 无法使用在本地机器上正常工作的程序在远程 Linux 机器上进入 Docker 容器?

我在本地和远程 Linux 机器上设置了 nsenter。远程盒子是一个托管的虚拟机。本地盒子是我办公室里的一台电脑。两者都运行 Ubuntu 12.0.4 LTS 服务器版本,并且都具有支持 docker 的内核补丁。我的本地机器正在运行 Docker 1.0.1,即 Docker 的 apt-get 版本。远程盒子正在运行 1.4.1,这是最新和最好的。

这是我用来在两台机器上执行 nsenter 的过程,显示了远程机器的详细信息:

我检查了远程框上的进程列表,32113肯定在进程列表中。我检查了文件结构,肯定有一个名为 /proc/32113/ns的目录。但是,在我的远程机器上,名为pid的文件/目录在进程命名空间文件夹中不存在。在我的本地盒子上确实如此。

为什么在我的本地机器上正确创建pid文件/目录时,它从我的远程机器中丢失?我该如何解决这个问题,以便我可以像在本地机器上一样在远程机器上输入我的Docker容器?

0 投票
2 回答
5435 浏览

docker - Docker exec 与 nsenter:有什么问题吗?

在过去的几个月里,我一直在使用nsenter来让 shell 在容器上运行以进行调试。我听说过并使用了 1.3 版中引入的docker exec 。Docker exec似乎是进入容器进行调试目的的新最佳实践,但我想知道使用 docker exec 与 nsenter 是否有任何缺点。比较两者的信息很少。docker exec在使用与 nsenter 相比时,我应该注意或避免任何特定问题吗?

0 投票
2 回答
2143 浏览

linux - 字符串中带有空格的环境变量 - 如何在 /proc/pid/environ 中使用它们

我将字符串中带有空格的变量设置为新的 bash:

现在,如果我想在相同的环境中启动一个新的 bash,我会执行以下操作:

但问题是,在 中/proc/self/environ,这个变量没有引号。所以最后一个命令抛出一个:env: variable: No such file or directory

我该如何解决这个限制?

PS:这是以下问题的简化版本:https ://github.com/jpetazzo/nsenter/issues/62

0 投票
3 回答
1622 浏览

python - 在命名空间中启动 multiprocessing.process

我正在尝试从已创建的命名空间(名为“test”)中启动一个新进程。

我研究了一些方法,包括 nsenter:

但我似乎无法找到在哪里可以找到 var、mypid 的参考......!

理想情况下,我想将 nsenter 之类的依赖项保持在最低限度(为了可移植性),所以我可能想沿着 ctypes 路线走下去,比如(尽管 netns 没有系统调用......):

或(取自http://tech.zalando.com/posts/entering-kernel-namespaces-with-python.html

但是,我仍然必须知道 PID,再加上我的 libc 没有 setns!

关于如何获得 PID 的任何想法都会很棒!

蒂亚!

0 投票
2 回答
1075 浏览

amazon-web-services - k8s:从 ECR 中提取图像时出错

我们Waiting: ImagePullBackOff在 CI 升级期间不断得到。有人知道发生了什么吗?通过 kops 安装的 k8s 集群 1.6.2。在升级期间,我们会kubectl set image在过去 2 天内看到以下错误 Failed to pull image "********.dkr.ecr.eu-west-1.amazonaws.com/backend:da76bb49ec9a": rpc error: code = 2 desc = net/http: request canceled Error syncing pod, skipping: failed to "StartContainer" for "backend" with ErrImagePull: "rpc error: code = 2 desc = net/http: request canceled"

journalctl -r -u kubelet Jul 26 09:32:40 ip-10-0-49-227 kubelet[840]: W0726 09:32:40.731903 840 docker_sandbox.go:263] NetworkPlugin kubenet failed on the status hook for pod "backend-1277054742-bb8zm_default": Unexpected command output nsenter: cannot open : No such file or directory Jul 26 09:32:40 ip-10-0-49-227 kubelet[840]: E0726 09:32:40.724387 840 generic.go:239] PLEG: Ignoring events for pod frontend-1493767179-84rkl/default: rpc error: code = 2 desc = Error: No such container: 2421109e0d1eb31242c5088b547c0f29377816ca068a283b8fe6c2d8e7e5874d Jul 26 09:32:40 ip-10-0-49-227 kubelet[840]: E0726 09:32:40.724371 840 kuberuntime_manager.go:858] getPodContainerStatuses for pod "frontend-1493767179-84rkl_default(0fff3b22-71c8-11e7-9679-02c1112ca4ec)" failed: rpc error: code = 2 desc = Error: No such container: 2421109e0d1eb31242c5088b547c0f29377816ca068a283b8fe6c2d8e7e5874d Jul 26 09:32:40 ip-10-0-49-227 kubelet[840]: E0726 09:32:40.724358 840 kuberuntime_container.go:385] ContainerStatus for 2421109e0d1eb31242c5088b547c0f29377816ca068a283b8fe6c2d8e7e5874d error: rpc error: code = 2 desc = Error: No such container: 2421109e0d1eb31242c5088b547c0f29377816ca068a283b8fe6c2d8e7e5874d Jul 26 09:32:40 ip-10-0-49-227 kubelet[840]: E0726 09:32:40.724329 840 remote_runtime.go:269] ContainerStatus "2421109e0d1eb31242c5088b547c0f29377816ca068a283b8fe6c2d8e7e5874d" from runtime service failed: rpc error: code = 2 desc = Error: No such container: 2421109e0d1eb31242c5088b547c0f29377816ca068a283b8fe6c2d8e7e5874d Jul 26 09:32:40 ip-10-0-49-227 kubelet[840]: with error: exit status 1

0 投票
0 回答
993 浏览

linux - 向未添加到 docker 组的用户提供对特定 docker 容器的 shell 访问

docker我的任务是在不将用户添加到组的情况下提供对特定 docker 容器的访问。

我做了什么

1)制作了一个nsenter-based必须进入容器的脚本(我们称之为script1.sh

2) 使该脚本全局可用sudo ln -s /full/path/to/script1.sh /usr/local/bin/some_new_command

3) 通过在文件中添加command="some_new_command"before来调整目标 ssh 密钥。ssh-rsaauthorized_keys

但是当我以目标用户登录时

sshpass -p <user_password> ssh <target_user>@<docker_host> "some_new_command"

我有一个错误Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

出了什么问题,有什么办法可以解决吗?

我的内核版本是4.4.0,所以它支持进入 pid 命名空间。

输入版本:nsenter from util-linux 2.27.1

PS 即使我添加<target_userdocker组并尝试执行,some_new_command我也会收到错误:nsenter: cannot open /proc/<PID>/ns/ipc: Permission denied

PPS 如果我使用 sudosome_new_command执行得很好。

0 投票
1 回答
1434 浏览

docker - docker 内部是否使用系统调用(如 chroot、unshare、nsenter 等)或 lxc 的包装器

我正在阅读一篇文章,通过使用 chroot、unshare、nsenter 等 linux 系统调用,在不使用 docker 的情况下从头开始构建容器。

docker内部是否围绕这些系统调用进行了包装,似乎docker exec没有按照这个答案使用nsenter

如果 docker 正在使用这些调用,那么它使用哪个 golang 二进制文件来进行这些系统调用。

或者 docker 是 lxc 的包装器,但在我看来,按照这个答案

谁能指出docker当前用于构建容器的确切低级内容(系统调用/lxc等)。

0 投票
1 回答
388 浏览

python - pip install nsenter 在 alpine docker 容器中超时

我正在使用 alpine:3.7 并尝试安装 python nsenter 包:

它卡在:

即使我尝试从容器内安装它:

我什至尝试从 pypi 存储库https://pypi.org/simple/nsenter/获取 nsenter并用于安装:

README.rst 说:

但是对于安装它只使用 python3/pip3:

任何想法如何安装 nsenter 而无需更改我的 python 版本?也许这可能是一个需要在上游打开的错误?