gpt4 book ai didi

docker - 在 docker 上运行的进程是否应该对外部操作系统可见?

转载 作者:行者123 更新时间:2023-12-02 18:01:24 24 4
gpt4 key购买 nike

我有一个带有程序的 docker 容器,该程序将某个 C++ 代码编译为 a.out 文件,然后运行它。

当我运行它时,我在 docker 外的“top”中看到 a.out。我什至可以从外部 docker 终止这个进程。

这是预期的行为吗?即,如果一个进程在 docker 中运行,它是否可以从 docker 外部被看到和杀死?或者也许我以错误的方式使用docker?

最佳答案

与虚拟机不同,Docker 通过使用 Linux 命名空间机制来隔离进程(这就是我们称 Docker 为轻量级隔离环境的原因)。 pid、network、uid 等有命名空间。在这种情况下,我们关心 pid 命名空间 .
您可以在 pid_namespaces 中找到详细的讨论。手册页。这里我只挑出相关信息:

PID namespaces can be nested: each PID namespace has a parent, except for the initial ("root") PID namespace.

A process is visible to other processes in its PID namespace, and to the processes in each direct ancestor PID namespace going back to the root PID namespace. In this context, "visible" means that one process can be the target of operations by another process using system calls that specify a process ID.


执行 top 时容器外的命令,您正在从顶级(根)pid 命名空间的 View 检查进程。

关于docker - 在 docker 上运行的进程是否应该对外部操作系统可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49729572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com