Linux容器
容器的核心概念是Namespace和Cgroup,在最早的容器概念中包含了对文件目录视图的抽象隔离,所有这一切都需要有工具来驱动,来提供一个可供用户操作的接口,以此来创建一个容器。所以容器的最小组成可由此公式表达:容器=cgroup+namespace+rootfs+容器引擎(用户态工具)
其中各项的功能分别为:
- Cgroup:资源控制。
- Namespace:访问隔离。
- rootfs:文件系统隔离。
- 容器引擎:生命周期控制。
目前业界几乎所有Linux容器项目都包含以上组件。
Docker容器
尽管容器技术已经出现了很久,却是随着Docker容器的出现才变得广为人知,作为第一个使容器能在不同平台移植的系统,它实至名归。Docker简化了打包应用的流程,也简化了打包应用的库和依赖,打镜像、推送仓库,拉取镜像运行容器,部署应用从未变得如此顺滑。
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。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。