Docker原理与架构是什么?

一、Docker原理

Docker利用Linux中的核心分离机制,例如Cgroups,以及Linux的核心Namespace(命名空间)来创建独立的容器。一句话概括起来Docker就是利用Namespace做资源隔离,用Cgroup做资源限制,利用Union FS做容器文件系统的轻量级虚拟化技术。

Docker容器的本质还是一个直接运行在宿主机上面的特殊进程,看到的文件系统是隔离后的,但是操作系统内核是共享宿主机OS,所以说Docker是轻量级的虚拟化技术。如果一个容器疯狂的消耗资源岂不是会影响同一宿主机上面其他的容器?所以Docker就需要一个限制容器能够使用资源上限的机制,那就是Linux Cgroup技术。

二、Docker架构

Docker包括三个基本概念:镜像(Image)、容器(Container)和仓库(Repository)。

镜像概念:Docker镜像是一个只读的模板,包含了运行应用程序所需要的所有文件、配置和依赖项。镜像可以被认为是容器的原型。镜像可以利用Dockerfile文件进行构建。
容器概念:Docker容器可以被看作是一个可运行的应用程序实例,是从Docker镜像生成的运行时环境。容器具有自己的根文件系统和资源隔离机制,并且可以通过端口映射来让它们之间互相通信。
文件系统:Docker基于AUFS(Advanced Multi-Layered Unification Filesystem)实现了文件系统的隔离。AUFS可将不同的文件系统挂载到同一个目录下,不同的容器之间共享相同的基础镜像。
网络:Docker提供了多种网络模式来实现容器之间的通信,例如容器间通信、容器与主机之间通信,以及不同Docker主机之间的通信。Docker还支持自定义网络,并可以为每个容器指定不同的网络配置。
存储:Docker的容器可以通过数据卷和挂载主机目录等方式实现数据的复制和持久化,从而保证数据的可靠性和持久性。

THE END