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

0 投票
0 回答
191 浏览

linux - 无法在远程容器的命名空间内运行隔离进程

我的目标是在远程容器内运行 Linux 命名空间(在 Go 中),我可以在不影响主机的情况下运行隔离进程。

假设我想bash在这个孤立的空间内奔跑。所以我为它运行了一个新的 UTS 命名空间。所以当我运行代码时,我得到了这个错误。

我对此错误进行了一些调查,并意识到由于非特权命名空间问题导致的错误原因。所以当我注释掉这些行时

代码有效。但这并没有达到目的。我也试过--privilaged但没有用。有没有其他方法可以克服这个问题?

0 投票
2 回答
121 浏览

c - 如何使用 linux 命名空间提供文件隔离

我正在尝试在两个 linux 命名空间中运行相同的程序。

程序需要读写文件/tmp/server.log。

所以我想确保程序A读/写server.log,但实际上它读写/tmp/server-A.log。而对于程序B读写server.log,其实就是读写/tmp/server-B.log。

我尝试使用 mount 但没有成功......有人可以帮助我吗?或者我是否有另一种方法来提供文件隔离,以便两个程序实际上不会读/写同一个文件?

更新:我根据下面回答的解决方案解决了问题!他们的解决方案真的对我有帮助!

0 投票
2 回答
836 浏览

kubernetes - Kubernetes 命名空间和 Linux 命名空间之间的区别?

Kubernetes 命名空间到底是什么,它与 linux 命名空间(mnt、pid、net、ipc、uts、user、cgroup)有何不同?

0 投票
1 回答
248 浏览

linux - 如何编写作为每个网络命名空间中的新实例的 Linux 内核模块?

在 Linux 内核模块中使用struct pernet_operationsregister_pernet_subsys(..)正确的方法来拥有每个网络命名空间的状态?

或者有没有办法只标记一个内核模块,它在每个网络命名空间中都有一个独立的状态?

0 投票
0 回答
147 浏览

linux - 启用用户时如何使用 docker build?

我的 dockerfile 很简单:

但是,它仍然失败:

我检查了档案,一切都归root所有。我有用户设置xx:100000:65536。docker run 似乎工作正常,该过程在用户 100000 下运行。但构建失败,我不知道为什么。

我什至不确定它为什么要尝试 100011,存档中的所有内容都归 0 所有,所以它应该只使用 100000(如果我了解它应该如何工作)。

编辑:

最小复制可以:

0 投票
2 回答
1490 浏览

kubernetes - Kubernetes POD 是否有与之关联的命名空间和 cgroup?

Docker 容器具有与之关联的 cgroup 和命名空间,无论它们是在 pod、vm 还是主机中运行。
同样,Kubernetes Pod 是否具有与之关联的命名空间和 cgroup,或者只是 Pod 中的容器具有这些(cgroup 和命名空间)关联。如果他们这样做,我如何从主持人那里找到此信息?

0 投票
0 回答
79 浏览

linux-containers - 如何遍历容器的pid命名空间?

我必须遍历在runc容器环境中启动的容器的进程树。我的目标是在容器暂停时遍历进程树,并调用clone特定pid于该进程树的方法,以便为它创建一个新的子进程。我怎样才能做到这一点?

0 投票
1 回答
79 浏览

linux-capabilities - AppArmor:如何使用 CAP_SYS_ADMIN/CAP_SYS_CHROOT 阻止 pid=host 容器读取(某些)主机文件?

Given 是一个具有pid=host(因此它位于初始 PID 命名空间中并且对所有进程具有完整视图)的容器。这个容器(更确切地说,它的进程)还具有 和 功能CAP_SYS_ADMINCAP_SYS_CHROOT因此它可以使用setns(2).

  • 是否可以使用 AppArmor 阻止此容器访问主机中的任意文件(初始挂载命名空间),但某些文件除外,例如/var/run/foo
  • AppArmor 如何根据挂载命名空间评估文件系统路径名?它是“忽略”挂载命名空间并只采用指定的路径,还是转换路径,例如在处理绑定挂载的子树等时?
0 投票
1 回答
452 浏览

c++ - 无法打开(/proc/$pid/ns/{namespace_files})

我必须将一个进程加入一个新的命名空间,所以我正在提取一个进程的命名空间 fd,以便它可以在这些 fd 上调用 setns。

但问题是所有返回的 fd 都是 -1s。

我这样做了:

pid, mnt,net是声明的路径。我该如何解决这个问题?

EDIT1:在打印 stderror 时,它说permission denied On doing sudo chmod 755on whole proc filesystem 它打印operation not permitted

EDIT2:我犯了一个错误,即不使用 sudo 编译和运行可执行文件。这次可以打开fds,返回的fds都是正数。与上面类似,我也打开了其他命名空间 fd,例如 usr_fd 加入用户命名空间,ipc_fd 加入 ipc 命名空间和 uts_fd 加入目标进程的 uts 命名空间,但是在这样做setnsuserfd会出现Invalid argument. 下面是我为加入命名空间而编写的代码。

我希望子进程在该命名空间中执行 getcode 程序,但它没有这样做?如果这样做是错误的方法,那么孩子如何在该命名空间中运行程序?

我的代码.cpp

EDIT3:但是替换以下行:

有了这个

作品。

0 投票
0 回答
41 浏览

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 文件

如何解决这个问题?