1.《Docker 从入门到实践》基本概念

1 什么是 Docker

Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroupnamespace,以及 OverlayFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器

Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷

2 为什么要用 Docker

  • 更高效的利用系统资源:不需要进行硬件虚拟以及运行完整OS等额外开销
  • 更快速的启动时间:直接运行于宿主内核(秒级、甚至毫秒级的启动时间)
  • 一致的运行环境:提供了除内核外完整的运行环境,确保了应用运行环境一致性
  • 持续交付和部署:一次创建或配置,可以在任意地方正常运行;开发人员可以通过 Dockerfile 来进行镜像构建并进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至自动部署
  • 更轻松的迁移:在不同平台(物理机/虚拟机/公有云/私有云)上运行的结果是一致的
  • 更轻松的维护和扩展:分层存储以及镜像的技术,简化了应用的复用和维护更新

Docker VS 传统虚拟机:

特性 容器 虚拟机
启动 秒级 分钟级
硬盘使用 一般为 MB 一般为 GB
性能 接近原生 弱于
系统支持量 单机支持上千个容器 一般几十个

3 Docker 基本概念

镜像(Image):一个特殊的文件系统

  • 提供容器运行时所需的程序、库、资源、配置等文件
  • 包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)
  • 镜像只是一个虚拟的概念,其实际是由一组文件系统组成(多层文件系统)
  • 分层存储的特征还使得镜像的复用、定制变的更为容易

镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等

容器(Container):运行于属于自己独立命名空间的进程

  • 可以拥有自己的 root 文件系统、网络配置、进程空间,甚至用户 ID 空间
  • 容器内的进程是运行在一个隔离的环境里,独立于宿主的系统
  • 容器不应该向其存储层内写入需要保存的数据,因为数据会随容器删除而消失

仓库(Repository):一个集中的存储、分发镜像的服务

  • 一个仓库会包含同一个软件不同版本的镜像:<仓库名>:<标签>
  • Docker Registry 公开服务允许用户免费上传、下载公开的镜像
  • 最常使用的 Registry 公开服务是官方的 Docker Hub(国内访问较慢)
  • 国内云服务商提供了针对 Docker Hub 的镜像服务(Registry Mirror
  • 用户还可以在本地搭建私有 Docker Registry,后续章节会有更多介绍

4 安装 Docker

官方安装教程

本书包含常用Ubuntu、Debian、Fedora、CentOS、Linux离线、macOS、Windows 10的安装教程;除此之外,还有镜像加速器的配置技巧、Docker 实验特性的开启

往年同期文章