问题标签 [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.
linux - CoreOS - 通过 PID 获取 docker 容器名称?
我有一个 PID 列表,我需要获取他们的 docker 容器名称。另一个方向很容易......通过图像名称获取 docker 容器的 PID:
知道如何通过 PID 获取名称吗?
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的行进行操作,则会运行一个新容器,而不是之前运行的容器。
多谢你们!
回答(详情请看下面我接受的内容)
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容器?
docker - Docker exec 与 nsenter:有什么问题吗?
在过去的几个月里,我一直在使用nsenter来让 shell 在容器上运行以进行调试。我听说过并使用了 1.3 版中引入的docker exec 。Docker exec似乎是进入容器进行调试目的的新最佳实践,但我想知道使用 docker exec 与 nsenter 是否有任何缺点。比较两者的信息很少。docker exec
在使用与 nsenter 相比时,我应该注意或避免任何特定问题吗?
linux - 字符串中带有空格的环境变量 - 如何在 /proc/pid/environ 中使用它们
我将字符串中带有空格的变量设置为新的 bash:
现在,如果我想在相同的环境中启动一个新的 bash,我会执行以下操作:
但问题是,在 中/proc/self/environ
,这个变量没有引号。所以最后一个命令抛出一个:env: variable: No such file or directory
我该如何解决这个限制?
PS:这是以下问题的简化版本:https ://github.com/jpetazzo/nsenter/issues/62
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 的任何想法都会很棒!
蒂亚!
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
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-rsa
authorized_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_user
到docker
组并尝试执行,some_new_command
我也会收到错误:nsenter: cannot open /proc/<PID>/ns/ipc: Permission denied
PPS 如果我使用 sudosome_new_command
执行得很好。
docker - docker 内部是否使用系统调用(如 chroot、unshare、nsenter 等)或 lxc 的包装器
我正在阅读一篇文章,通过使用 chroot、unshare、nsenter 等 linux 系统调用,在不使用 docker 的情况下从头开始构建容器。
docker内部是否围绕这些系统调用进行了包装,似乎docker exec没有按照这个答案使用nsenter
如果 docker 正在使用这些调用,那么它使用哪个 golang 二进制文件来进行这些系统调用。
或者 docker 是 lxc 的包装器,但在我看来,按照这个答案
谁能指出docker当前用于构建容器的确切低级内容(系统调用/lxc等)。
python - pip install nsenter 在 alpine docker 容器中超时
我正在使用 alpine:3.7 并尝试安装 python nsenter 包:
它卡在:
即使我尝试从容器内安装它:
我什至尝试从 pypi 存储库https://pypi.org/simple/nsenter/获取 nsenter并用于安装:
README.rst 说:
但是对于安装它只使用 python3/pip3:
任何想法如何安装 nsenter 而无需更改我的 python 版本?也许这可能是一个需要在上游打开的错误?