zoukankan      html  css  js  c++  java
  • docker 基本原理

    docker容器其实是一个进程,docker利用了 linux系统的  namespace,cgroup,联合文件系统将容器隔离。

    dockerd containerd  containerd-shim  runc

    容器是基于镜像创建的可运行实例,并且单独存在,一个镜像可以创建出多个容器。运行容器化环境时,实际上是在容器内部创建该文件系统的读写副本。 这将添加一个容器层,该层允许修改镜像的整个副本。

    虚拟机是通过管理系统(Hypervisor)模拟出 CPU、内存、网络等硬件,然后在这些模拟的硬件上创建客户内核和操作系统。这样做的好处就是虚拟机有自己的内核和操作系统,并且硬件都是通过虚拟机管理系统模拟出来的,用户程序无法直接使用到主机的操作系统和硬件资源,因此虚拟机也对隔离性和安全性有着更好的保证。

    而 Docker 容器则是通过 Linux 内核的 Namespace 技术实现了文件系统、进程、设备以及网络的隔离,然后再通过 Cgroups 对 CPU、 内存等资源进行限制,最终实现了容器之间相互不受影响,由于容器的隔离性仅仅依靠内核来提供,因此容器的隔离性也远弱于虚拟机。

    你可能会问,既然虚拟机安全性这么好,为什么我们还要用容器呢?这是因为容器与虚拟机相比,容器的性能损耗非常小,并且镜像也非常小,而且在业务快速开发和迭代的今天,容器秒级的启动等特性也非常匹配业务快速迭代的业务场景。

  • 相关阅读:
    我很高兴,很欣慰:)
    任天堂Wii低价发布 游戏革命今冬开始
    血狮——当年号称已经超越C&C的游戏
    网络游戏《防沉迷系统开发标准(试行)》内容
    经典劣作《大卡车》演示视频
    SANTENDO的大脑训练计划
    linq
    对象构造者
    扩展方法
    隐式类型化本地变量
  • 原文地址:https://www.cnblogs.com/jasonbourne3/p/14023027.html
Copyright © 2011-2022 走看看