OCI(docker)规范和AppC(CoreOS)规范
Kubernetes(k8s)既可使用docker也可使用rkt
Docker容器技术使用OCI规范
rkt容器技术使用AppC规范
oci规范是oci基于docker制定的容器标准
AppC容器开放标准与规范是CoreOS制定的
名称 | 组织 | 代码地址 | 备注 |
containerd | CNCF | https://github.com/containerd | 云原生计算基金会 |
docker | docker公司 | ||
rkt容器 | CoreOS | https://github.com/rkt/rkt | |
OCI规范 | OCI组织 | https://opencontainers.org/release-notices/v1-0-0/ |
OCI 由 docker、coreos 以及其他容器相关公司创建于 2015 年,目前主要有两个标准文档: OCI(open Container Initiative)容器标准化组织的主要目的是推进容器技术的标准化 |
AppC规范 | coreos公司 | https://github.com/appc/spec | |
flannel | coreos公司 | https://github.com/coreos/flannel/releases | |
Calico | https://github.com/calico https://github.com/projectcalico/ https://github.com/projectcalico/calico |
||
runc | OCI组织 |
https://github.com/opencontainers/runc |
runc 是 docker 捐赠给 OCI 的一个符合标准的 runtime 实现 runc 基于libcontainer,已单独成项目,Docker使用的是libcontainer/runc |
runc命令行 | runc spec 生成符合oci的配置文件 | ||
OCF | https://opencontainers.org/ https://github.com/opencontainers/specs |
OCF是一种新兴的容器标准,从文件系统的角度定义什么是标准容器 | |
busybox | https://github.com/topics/busybox https://busybox.net/ |
通常作为基础镜像,生成定制化的基础镜像或者是制作基础文件系统 | |
OCF | 开放容器格式标准 Open Container Format | ||
cnm和cni(容器网络) | docker/coreos公司 |
libnetwork是对CNM的实现,提供docker核心网络架构的全部功能 |
docker提出的cnm规范和coreos提出的cni规范
|
cni容器网络技术 | CNI意为容器网络接口(ContainerNetwork Interface) |
google公司的calico |
|
cni规范 |
https://github.com/containernetworking/cni/blob/main/SPEC.md |
https://github.com/containernetworking/plugins
https://github.com/containernetworking/cni/blob/v1.0.1/Documentation/spec-upgrades.md https://github.com/containernetworking/cni/blob/spec-v0.1.0/SPEC.md |
|
rkt容器技术 | coreos公司出品 |
http://kubernetes.io/docs/getting-started-guides/rkt/ |
同docker,也是容器技术一种,是coreos团队打造的 |
CRI |
Container Runtime Interface (CRI)-k8s操作 CRI中定义了容器和镜像的服务的接口,因为容器运行时与镜像的生命周期是彼此隔离的,因此需要定义两个服务,该接口使用Protocol Buffer,基于gRPC。(client) Container Runtime实现了CRI gRPC Server,包括RuntimeService和ImageService。该gRPC Server需要监听本地的Unix socket,而kubelet则作为gRPC Client运行 在k8s 1.5版本之后,kubernetes推出了自己的运行时接口api–CRI(container runtime interface)。
cri接口的推出,隔离了各个容器引擎之间的差异,而通过统一的接口与各个容器引擎之间进行互动。
|
||
rktnetes | coreos公司出品 |
rktnetes是一套代码库,它允许Kubernetes节点使用rkt而非Docker来运行容器。这个项目为Kubernetes增加了新的功能,例如在更加灵活的隔离级别下运行容器 |