作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
我们在上一章,讲了虚拟化,虚拟化是把硬件虚拟化,然后创建出来的虚拟机完全隔离,而Docker则是软件(内核)虚拟化,他的隔离性会低于虚拟机。我们将通过3-4周来讲解Docker相关内容,由于涉及到内容较多,就不一一列出来具体的细节,主要从以下几个方面来讲解:
Docker基本情况
Docker基本命令
Dockerfile
Docker镜像
Docker仓库
Docker原理
Docker网络&存储&日志
Docker-Compose
Docker番外篇(本小节属于)
Containerd 为什么要单独拿出来说呢,因为目前随着Kubernetes放弃Docker,而且随着版本的不停迭代,市面上的大规模的Docker使用会越少越少,越来越多的人会直接使用Kubernetes,跳过Docker的管理,所以这里我们单独拿了一个小节来说说。
在容器领域有几个核心概念,Docker, Containerd ,Runc,Podman以及OCI等。尤其后期Docker的概念被弱化了。理解这些概念你才能更好的理解
名字
核心功能
下级
是否可以独立使用
强关联Kubernetes
Docker
构建镜像,容器生命周期管理
Containerd
是
是
Containerd
容器生命周期管理
Runc
是
是
Runc
容器运行时(创建容器环境)
Cgroup/Namespace
是
否
Podman
构建镜像,容器生命周期管理
Runc
是
否
OCI
容器规范
容器规范,镜像规范
否
否
Docker
Docker 是一个开源的平台,用于开发、打包、部署和运行应用程序的工具和服务。它提供了一整套容器化工具,包括 Docker Engine、Docker CLI、Docker Compose 和 Docker Swarm 等。使用 Docker,开发人员可以将应用程序及其依赖打包到一个可移植的容器中,并在任何地方运行。
核心功能:构建镜像,容器生命周期管理(通过调用Containerd来实现),他是有守护进程的,这守护进程可以接受标准API输入。
Containerd
Containerd 是一个开源的容器运行时(container runtime),最初由 Docker 公司开发,并后来捐赠给 CNCF(Cloud Native Computing Foundation)。它旨在提供核心的容器功能,如镜像传输和存储、容器生命周期管理、进程隔离等。containerd 负责管理容器的创建、启动、停止和删除,以及与容器相关的基本操作。
核心功能:容器生命周期管理(通过调用Runc来实现),他是有守护进程的,这守护进程可以接受标准API输入。
Runc
runc 是一个轻量级的容器运行时工具,它基于 OCI(Open Container Initiative)标准,提供了容器生命周期管理、进程隔离、文件系统隔离和网络隔离等功能。runc 的主要作用是将 OCI 格式的容器映射到 Linux 内核中的 cgroups 和 namespace。
核心功能:调用系统功能实现容器的隔离限制(通过Cgroups和Namespace实现),简单来说他是一个二进制包。
Podman
Podman 可以看作是一个更加轻量级、独立的容器运行时工具,适合于单机容器管理。
核心功能:构建镜像,容器生命周期管理(通过调用Runc来实现),简单来说他也是一个二进制包。创建的容器,重启以后是不能通过podman来实现自动启动的。
OCI
OCI 是一个开放标准,旨在定义容器格式和运行时规范,以促进容器生态系统的发展。OCI 的主要成员包括 Docker、Red Hat、Google、CoreOS、Microsoft 等公司,以及一些社区组织。
OCI 标准定义了容器镜像和容器运行时的格式和规范,以保证容器在不同平台上的兼容性和可移植性。OCI 定义的容器镜像格式是 OCI Image Format,容器运行时规范是 OCI Runtime Specification。
OCI 标准的主要作用是促进容器技术的发展和规范化,以便不同厂商和组织可以共同推进容器生态系统的发展,实现容器平台和应用程序之间的互操作性和可移植性。
以上Docker, Containerd,Runc,Podman 等都需要遵循OCI的规范。
运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!
关注微信公众号《运维小路》获取更多内容。