docker和宿主机关系?

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

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

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

参与8

2同行回答

匿名用户匿名用户
当你在Docker容器内查看/proc/cpuinfo时,显示的是宿主机的信息,这是因为Docker容器共享宿主机的内核,而/proc/cpuinfo文件是内核提供的信息。Docker使用Linux的命名空间(namespaces)来实现容器的隔离,但它并不虚拟化整个操作系统。相反,容器与宿主机共享同一个内核,这样可以避免...显示全部

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

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

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

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

收起
事业单位 · 2023-06-21
浏览760
waring_idwaring_id技术经理某公司
容器是直接使用宿主机的内核的一个隔离的进程,而虚拟机是虚拟化出一个完整操作系统,新建容器和新建虚拟机的量级就拉开了(实际上最新的openstack虚机也能秒级启动)。因为不需要虚拟完整操作系统,单数量上一台物理机能跑的容器是远大于虚拟机的数量的。但是不能把容器拿来当...显示全部
  1. 容器是直接使用宿主机的内核的一个隔离的进程,而虚拟机是虚拟化出一个完整操作系统,新建容器和新建虚拟机的量级就拉开了(实际上最新的openstack虚机也能秒级启动)。因为不需要虚拟完整操作系统,单数量上一台物理机能跑的容器是远大于虚拟机的数量的。但是不能把容器拿来当作虚拟机给租户使用的。
  2. 虚拟机应用程序读取内存会有两次内存的映射,读写内存上容器是高效于虚拟机的
  3. 因为虚拟化,容器在宿主机的计算能力是没有损耗的,kvm是有损耗的大概50%(现今可能没这么多,但是还是有损耗的)。
收起
零售/批发 · 2023-06-29

ChatGPT 回答

进入Docker容器查看cpuinfo显示的是宿主机的信息,是因为Docker容器并不是一个完整的虚拟机,它与宿主机共享同一个内核,因此在容器内查看cpuinfo时,会显示宿主机的信息。

同样地,使用top命令在容器内显示宿主机的信息,也是因为top命令是在容器内运行的,但是它获取的信息是从宿主机的/proc目录下获取的,因此会显示宿主机的信息。

Docker本质上是一个轻量级的虚拟化技术,它通过引入namespace实现了进程、网络、文件系统等方面的隔离,通过引入unionfs实现了虚拟文件系统,通过资源配额实现了资源限制。但是,Docker并不是一个完整的虚拟机,它与宿主机共享同一个内核,因此在某些情况下,容器内会显示宿主机的信息。

提问者

烟波刀客
运维建筑
擅长领域: 云计算容器监控

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2023-06-20
  • 关注会员:3 人
  • 问题浏览:1483
  • 最近回答:2023-06-29
  • X社区推广