容器生态系统
容器核心技术
容器规范
容器不仅仅只有 Docker 还有 Containerd、Podman、iSula、Rocket 等。所以为了保证容器生态的健康发展,让所有容器之间能够相互兼容,需要建立起一个统一的规范。所以由 Docker、Google、CoreOS 等公司建立起了一个 Open Container Initiative (OCI)组织,负责制定容器的规范。
目前发布的容器规范:runtime spec、image format spec。
容器 runtime
容器真正运行的地方,需要和操作系统 Kernel 紧密协作,为容器提供运行环境。
主流的 runtime:
-
lxc:Linux 上的老牌 runtime。Docker 最初使用的 runtime;
-
runc:Docker 自己开发的 runtime ,符合 OCI 规范,目前 Docker 默认的 runtime;
-
rkt:CoreOS 开发的容器 runtime,符合 OCI 规范,能够运行 Docker 的容器。
容器管理工具
用户用来管理容器的工具,对内与 runtime 交互,对外为用户提供操作接口。
容器管理工具:
-
lxd:lxc 对应的管理工具;
-
docker engine:runc 对应的管理工具,包含后台 deamon 和 cli 两部分;
-
rkt cli:rkt 对应的管理工具。
容器定义工具
用户用来定义容器的内容和属性的工具,这样使得容器可以被保存、共享和重建。
容器定义工具:
-
Docker image:Docker 容器的模板,runtime 根据 docker image 创建容器;
-
Dockerfile:包含若干命令的文本文件,可以通过这些命令创建出 docker image;
-
ACI (App Container Image):类似 docker image,由 CoreOS 开发的 rkt 容器的 image 格式。
Registries
用来存放 image 的仓库。
-
Docker Registry:便于企业用来构建私有的 image 仓库 ;
-
Docker Hub:公共的 image 仓库(https://hub.docker.com);
-
Quay.io:提供与 Docker Hub 类似的服务,也是一个公共的 imags 仓库(https://quay.io)。
容器 OS
专门运行容器的操作系统,当然常规操作系统(Linux、MAC OS、Windows)都可以运行容器,但是与常规操作系统相比容器 OS 体积更小,启动更快。
容器 OS:CoreOS、Atomic、Ubuntu Core。
【1】CloudMan·《每天5分钟玩转Docker容器技术》·清华大学出版社
【2】广然笔记:https://www.rsecc.cn