问题标签 [linux-namespaces]
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 - 无法在远程容器的命名空间内运行隔离进程
我的目标是在远程容器内运行 Linux 命名空间(在 Go 中),我可以在不影响主机的情况下运行隔离进程。
假设我想bash
在这个孤立的空间内奔跑。所以我为它运行了一个新的 UTS 命名空间。所以当我运行代码时,我得到了这个错误。
我对此错误进行了一些调查,并意识到由于非特权命名空间问题导致的错误原因。所以当我注释掉这些行时
代码有效。但这并没有达到目的。我也试过--privilaged
但没有用。有没有其他方法可以克服这个问题?
c - 如何使用 linux 命名空间提供文件隔离
我正在尝试在两个 linux 命名空间中运行相同的程序。
程序需要读写文件/tmp/server.log。
所以我想确保程序A读/写server.log,但实际上它读写/tmp/server-A.log。而对于程序B读写server.log,其实就是读写/tmp/server-B.log。
我尝试使用 mount 但没有成功......有人可以帮助我吗?或者我是否有另一种方法来提供文件隔离,以便两个程序实际上不会读/写同一个文件?
更新:我根据下面回答的解决方案解决了问题!他们的解决方案真的对我有帮助!
kubernetes - Kubernetes 命名空间和 Linux 命名空间之间的区别?
Kubernetes 命名空间到底是什么,它与 linux 命名空间(mnt、pid、net、ipc、uts、user、cgroup)有何不同?
linux - 如何编写作为每个网络命名空间中的新实例的 Linux 内核模块?
在 Linux 内核模块中使用struct pernet_operations
和register_pernet_subsys(..)
正确的方法来拥有每个网络命名空间的状态?
或者有没有办法只标记一个内核模块,它在每个网络命名空间中都有一个独立的状态?
linux - 启用用户时如何使用 docker build?
我的 dockerfile 很简单:
但是,它仍然失败:
我检查了档案,一切都归root所有。我有用户设置xx:100000:65536
。docker run 似乎工作正常,该过程在用户 100000 下运行。但构建失败,我不知道为什么。
我什至不确定它为什么要尝试 100011,存档中的所有内容都归 0 所有,所以它应该只使用 100000(如果我了解它应该如何工作)。
编辑:
最小复制可以:
kubernetes - Kubernetes POD 是否有与之关联的命名空间和 cgroup?
Docker 容器具有与之关联的 cgroup 和命名空间,无论它们是在 pod、vm 还是主机中运行。
同样,Kubernetes Pod 是否具有与之关联的命名空间和 cgroup,或者只是 Pod 中的容器具有这些(cgroup 和命名空间)关联。如果他们这样做,我如何从主持人那里找到此信息?
linux-containers - 如何遍历容器的pid命名空间?
我必须遍历在runc
容器环境中启动的容器的进程树。我的目标是在容器暂停时遍历进程树,并调用clone
特定pid
于该进程树的方法,以便为它创建一个新的子进程。我怎样才能做到这一点?
linux-capabilities - AppArmor:如何使用 CAP_SYS_ADMIN/CAP_SYS_CHROOT 阻止 pid=host 容器读取(某些)主机文件?
Given 是一个具有pid=host
(因此它位于初始 PID 命名空间中并且对所有进程具有完整视图)的容器。这个容器(更确切地说,它的进程)还具有 和 功能CAP_SYS_ADMIN
,CAP_SYS_CHROOT
因此它可以使用setns(2)
.
- 是否可以使用 AppArmor 阻止此容器访问主机中的任意文件(初始挂载命名空间),但某些文件除外,例如
/var/run/foo
? - AppArmor 如何根据挂载命名空间评估文件系统路径名?它是“忽略”挂载命名空间并只采用指定的路径,还是转换路径,例如在处理绑定挂载的子树等时?
c++ - 无法打开(/proc/$pid/ns/{namespace_files})
我必须将一个进程加入一个新的命名空间,所以我正在提取一个进程的命名空间 fd,以便它可以在这些 fd 上调用 setns。
但问题是所有返回的 fd 都是 -1s。
我这样做了:
pid
, mnt
,net
是声明的路径。我该如何解决这个问题?
EDIT1:在打印 stderror 时,它说permission denied
On doing sudo chmod 755
on whole proc filesystem 它打印operation not permitted
EDIT2:我犯了一个错误,即不使用 sudo 编译和运行可执行文件。这次可以打开fds,返回的fds都是正数。与上面类似,我也打开了其他命名空间 fd,例如 usr_fd 加入用户命名空间,ipc_fd 加入 ipc 命名空间和 uts_fd 加入目标进程的 uts 命名空间,但是在这样做setns
时userfd
会出现Invalid argument
. 下面是我为加入命名空间而编写的代码。
我希望子进程在该命名空间中执行 getcode 程序,但它没有这样做?如果这样做是错误的方法,那么孩子如何在该命名空间中运行程序?
我的代码.cpp
EDIT3:但是替换以下行:
有了这个
作品。
process - 加入的进程无法写入容器的ns_last_pid
来自主机的进程加入了容器的命名空间,并试图写入ns_last_pid
存在于/proc/sys/kernel/ns_last_pid
. 但它给出了一个错误Read only file system
。
而我可以ns_last_pid
通过此解决方案在主机文件上
执行此操作无法写入 /proc/sys/kernel/ns_last_pid 文件
如何解决这个问题?