docker两条基本理念

Build Ship and Run

  • Build(构建镜像) : 镜像是只读模板,包含程序、文件以及运行环境等。
  • Ship(运输镜像) :在宿主机和仓库间相互运输。
  • Run (运行镜像) :即加载并运行镜像,运行中的镜像就是容器,同一个镜像可以有多个容器。

    Build once,Run anywhere

    搭建一次,到处能用。

    三大核心概念

    镜像 (Image)

    映像是一个只读模板,带有创建Docker容器的指令。

    容器 (Container)

    容器是用镜像创建的运行实例。

    仓库 (Repository)

    集中存放镜像文件的场所

    为什么docker比虚拟机快

    docker有比虚拟机更少的抽象层。

    由于docker不需要Hypervisor(虚拟机)实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会比虚拟机有明显的效率优势。

    docker利用的是宿主机的内核,而不需要加载操作系统OS内核。

    当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。进而避免引导、寻址、加载操作系统内核等比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载OS,返回新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个docker容器只需要几秒钟。

    docker与虚拟机对比

    | | Docker容器 | 虚拟机 | | —- | —- | —- | | 硬件 | 原生硬件 | 虚拟硬件 | | 操作系统 | 与宿主机共享OS | 完整的操作系统 | | 隔离性 | 较差 | 彻底 | | 存储大小 | 镜像小,便于存储与传输 | 镜像庞大(vmdk、vdi等) | | 部署速度 | 快速,秒级 | 较慢,10秒以上 | | 运行性能 | 几乎无额外性能损失 | 操作系统额外的CPU、内存消耗 | | 可移植性 | 轻便、灵活,适用于linux | 笨重,与虚拟化技术耦合度高 | | 资源利用率 | 极高 | 较低 | | 系统支持量 | 单机支持上千个容器 | 一般是几十个 | | 硬件亲和性 | 面向软件开发者 | 面向硬件运维者 |