Linux容器

容器的核心概念是Namespace和Cgroup,在最早的容器概念中包含了对文件目录视图的抽象隔离,所有这一切都需要有工具来驱动,来提供一个可供用户操作的接口,以此来创建一个容器。所以容器的最小组成可由此公式表达:容器=cgroup+namespace+rootfs+容器引擎(用户态工具)

其中各项的功能分别为:

  • Cgroup:资源控制。
  • Namespace:访问隔离。
  • rootfs:文件系统隔离。
  • 容器引擎:生命周期控制。

目前业界几乎所有Linux容器项目都包含以上组件。

Docker容器

尽管容器技术已经出现了很久,却是随着Docker容器的出现才变得广为人知,作为第一个使容器能在不同平台移植的系统,它实至名归。Docker简化了打包应用的流程,也简化了打包应用的库和依赖,打镜像、推送仓库,拉取镜像运行容器,部署应用从未变得如此顺滑。
Docker-image-registry.png

OCI规范

Docker成功之后,联合其他容器行业领导者成立了开放容器规范OCI,围绕容器格式和运行时创建了开放工业标准。
核心内容是:OCI Runtime Spec(容器运行时规范)、 OCI Image Spec(镜像格式规范)、 OCI Distribution Spec(镜像分发规范),OCI组织要解决的是容器额构建、分发和运行的问题。

因为某些未知的原因,自Kubernetes 1.20 之后将弃用 Docker 作为容器运行时,“弃用 Docker”这个词本身有多重的含义,Docker 并非一个单层软件,Kubernetes 1.20 启用 dockershim 并不代表弃用了 Docker 的全部,仍有 containerd 以及开源的cri-o可以对接 docker。


EngineerLeo
598 声望38 粉丝

专注于云原生、AI等相关技术