docker容器和虚拟机

本文介绍了Docker容器的核心原理,包括利用Linux Namespace、Cgroups实现资源隔离,以及如何通过rootfs和层的概念构建容器镜像。所有容器共享宿主机内核,这既是优势也存在缺陷。Docker镜像通过层层叠加形成,提供了一个轻量级的运行环境。
摘要由CSDN通过智能技术生成

前言

1: 只知道虚拟机会对硬件进行虚拟化,容器使用的硬件资源还是宿主机的

 

正文

1: 对 Docker 项目来说,它最核心的原理实际上就是为待创建的用户进程: 启用 Linux Namespace 配置; 设置指定的 Cgroups 参数; 切换进程的根目录(Change Root)。

 

2: 实际上,同一台机器上的所有容器,都共享宿主机操作系统的内核。

 

这就意味着,如果你的应用程序需要配置内核参数、加载额外的内核模块,以及跟内核进行直接的交互,你就需要注意了:这些操作和依赖的对象,都是宿主机操作系统的内核,它对于该机器上的所有容器来说是一个“全局变量”,牵一发而动全身。

 

这也是容器相比于虚拟机的主要缺陷之一:毕竟后者不仅有模拟出来的硬件机器充当沙盒,而且每个沙盒里还运行着一个完整系统。

 

3:容器镜像,也叫作:rootfs。它只是一个操作系统的所有文件和目录,并不包含内核,它和mount namespace协助构建出独立的文件系统。

 

而这个挂载在容器根目录上、用来为容器进程提供隔离后执行环境的文件系统,就是所谓的“容器镜像”。它还有一个更为专业的名字,叫作:rootfs(根文件系统)。

所以,一个最常见的 rootfs,或者说容器镜像,会包括如下所示的一些目录和文件,比如 /bin,/etc,/proc 等等:

所以说,rootfs 只包括了操作系统的“躯壳”,并没有包括操作系统的“灵魂”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Docker容器虚拟机(VM)之间的性能区别主要体现在以下几个方面: 1. 轻量化:Docker容器虚拟机更轻量级,因为它们共享宿主机操作系统的内核和系统库。这意味着在同一台物理机上可以同时运行更多的Docker容器,而虚拟机则需要每个VM都运行自己的操作系统。 2. 启动时间:Docker容器相对于虚拟机具有更快的启动时间。这是因为启动一个Docker容器只需要创建一个新的进程,并且可以使用现有的基础镜像,而虚拟机需要加载整个操作系统和应用程序。 3. 资源占用:由于Docker容器共享宿主机的资源,所以占用的资源更少,包括内存、存储和CPU。而虚拟机需要独立的资源来运行操作系统和应用程序。 4. 性能损耗:由于Docker容器在宿主机上直接运行,并与宿主机共享内核,因此不会引入额外的性能损耗。虚拟机则需要通过虚拟化层来访问宿主机的资源,可能会带来一定程度的性能损耗。 5. 隔离性:虚拟机提供了更强的隔离性,每个VM都运行在独立的虚拟环境中,与其他虚拟机和宿主机隔离开。而Docker容器共享宿主机的操作系统,因此隔离性较弱,容器之间的相互影响可能较大。 综上所述,Docker容器虚拟机在性能方面存在一些区别。如果对轻量级、快速启动时间和资源优化有较高要求的场景,Docker容器是更好的选择。而在对隔离性和安全性要求较高的情况下,则可以选择虚拟机。当然,在实际应用中,具体的需求和使用场景也会对选择产生影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huangleijay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值