Docker与虚拟化技术比较

1 容器究竟是什么 ?

1) docker与虚拟机的区别


图片.png

虚拟机技术:虚拟出操作系统和硬件的各种环境,有独立的操作系统, 有完整独立的文件系统、IO输入、虚拟网卡等。

docker: 通过约束和修改进程的动态表现,从而为其创造出一个“边界”。
容器,其实是一种特殊的进程而已。

虚拟机是硬件级别的抽象,容器是应用级别的抽象。

  docker  run  -it ubuntu /bin/sh
图片.png

mac是宿主机,在容器里执行ps
容器里有两个进程在跑。这就意味着,/bin/sh和ps隔离在一个跟宿主机完全不同的世界中。

这其实是一个障眼法。

/bin/bash以为自己是pid为1的进程,实际上在宿主机里前面还有很多进程。

在docker虚拟了一个操作系统。但docker使用了linxu的namespace的技术。除了pid NAMESPACE, 还提供了 Mount,UTS 、IPS、 NetWork和user各种NameSpace。

除了namespace,还依靠了 cgroups和rootfs.

实际上 docker隔离并没有虚拟机那么彻底。

1。隔离性
首先,既然容器只是运行在宿主机上的一种特殊的进程,那么多个容器之间使用的就还是同一个宿主机的操作系统内核。

2。其次,在 Linux 内核中,有很多资源和对象是不能被 Namespace 化的,最典型的例子就是:时间。

3 Cgroups 就是 Linux 内核中用来为进程设置资源限。

Linux Cgroups 的全称是 Linux Control Groups.它最主要的作用,就是限制一个进程组能够使用的资源上限,包括CPU, 内存、硬盘、网络。

3 容器究竟有什么好处
解决了应用打包的难度

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容