当前位置: 首页 > 面试题库 >

内核级别的Docker命名空间

邵畅
2023-03-14
问题内容

当我们在docker容器内创建新进程时,如何区分pid容器的pid 1,17和主机的1,17 etc pid,以及所有内核更改都在发生?

如何在主机中看到docker内部的进程?


问题答案:

如何用主机的1,17区分docker容器的pid 1,17等

默认情况下,这些pid位于不同的命名空间中。
从发行10080和开始--pid host,容器pid可以保留在主机的pid名称空间中。
还有一个问题10163:“允许共享的PID名称空间”,请求一个
--pid=container:id


当我们在Docker容器中创建新进程时,所有内核更改都在发生什么

请注意并于2016年5月更新:
问题10163,--pid=container:id现在由PR
22481针对docker
1.12进行了解决,允许加入另一个容器的PID名称空间。

在内核级别没有更改,仅使用:

  • cgroups或对照组。隔离运行应用程序的一个关键是使它们仅使用所需的资源。
  • 联合文件系统以提供容器的构建块


 类似资料:
  • 内核命名空间 Docker 容器和 LXC 容器很相似,所提供的安全特性也差不多。当用 docker run 启动一个容器时,在后台 Docker 为容器创建了一个独立的命名空间和控制组集合。 命名空间提供了最基础也是最直接的隔离,在容器中运行的进程不会被运行在主机上的进程和其它容器发现和作用。 每个容器都有自己独有的网络栈,意味着它们不能访问其他容器的 sockets 或接口。不过,如果主机系统

  • 我需要在集群级或命名空间级(尽可能)配置以下限制: 不允许运行pod作为previldged 不允许pod作为uid 0运行 不允许任何吊舱使用主机网络命名空间 Kubernetes 1.12,带RBAC

  • 当我挂载$docker时,为使用主机文件系统的正在运行的容器运行-v/tmp:/tmp-ti ubuntu/bin/bash。当我从exit命令关闭上述容器并将上述容器id与新的$docker运行链接--volumes-from=“closed container id”-ti ubuntu/bin/bash时,这也使用了新运行的容器中的/tmp文件。

  • 内联命名空间旨在通过”版本”的概念,来实现库的演化。考虑如下代码: // 文件:V99.h inline namespace V99 { void f(int); // 对V98版本进行改进 void f(double); // 新特性 // … } // 文件:V98.h namespace V98 { void

  • 为什么using指令在包含在匿名命名空间中时表现得好像出现在全局范围?

  • 关于术语的一点说明: 请务必注意一点,TypeScript 1.5里术语名已经发生了变化。 “内部模块”现在称做“命名空间”。 “外部模块”现在则简称为“模块”,这是为了与ECMAScript 2015里的术语保持一致,(也就是说 module X { 相当于现在推荐的写法 namespace X {)。 这篇文章描述了如何在TypeScript里使用命名空间(之前叫做“内部模块”)来组织你的代码