docker和宿主机关系?

进入docker容器查看cpuinfo为什么显示的是宿主机的信息呢?在容器内使用top命令为什么也显示宿主机的信息?docker本质是在进程的基础上引入namespace做隔离,引入unionfs做虚拟文件系统,引入资源配额做资源限制。... 显示全部

进入docker容器查看cpuinfo为什么显示的是宿主机的信息呢?

在容器内使用top命令为什么也显示宿主机的信息?

docker本质是在进程的基础上引入namespace做隔离,引入unionfs做虚拟文件系统,引入资源配额做资源限制。

收起
参与8

查看其它 1 个回答匿名用户 的回答

匿名用户匿名用户

当你在Docker容器内查看/proc/cpuinfo时,显示的是宿主机的信息,这是因为Docker容器共享宿主机的内核,而/proc/cpuinfo文件是内核提供的信息。

Docker使用Linux的命名空间(namespaces)来实现容器的隔离,但它并不虚拟化整个操作系统。相反,容器与宿主机共享同一个内核,这样可以避免运行多个相同内核的副本,提高了效率。因此,在容器中查看/proc/cpuinfo会显示宿主机的信息,因为该文件反映的是宿主机上的CPU信息。

同样地,当你在容器内使用top命令时,它也会显示宿主机的信息。top命令通过读取/proc目录下的各种信息来获取系统状态,包括CPU、内存、进程等。由于容器与宿主机共享/proc文件系统,所以top命令在容器中显示的是宿主机上的信息。

需要注意的是,虽然Docker提供了资源配额和限制的功能,但容器内的进程仍然可以观察到宿主机上的整体资源使用情况。这是因为容器的隔离是基于命名空间和控制组(cgroups)等机制实现的,而不是完全虚拟化。

事业单位 · 2023-06-21
浏览835

回答状态

  • 发布时间:2023-06-21
  • 关注会员:3 人
  • 回答浏览:835
  • X社区推广