Docker与虚拟化技术比较

作者: 同人于野_2068 | 来源:发表于2019-05-17 14:19 被阅读0次

    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 容器究竟有什么好处
    解决了应用打包的难度

    相关文章

      网友评论

        本文标题:Docker与虚拟化技术比较

        本文链接:https://www.haomeiwen.com/subject/pfnnaqtx.html