Docker原理最全详解(图文全面总结)

450次阅读  |  发布于6月以前

大家好,我是mikechen。

Docker是云原生非常核心的组件,也是大厂经常考察的内容,下面我就全面来详解Docker原理@mikechen

最新mikechen原创超30万字《阿里架构师进阶专题合集》和《大厂最全面试题及答案合集》,请关注本公众号【mikechen的互联网架构】,后台回复:合集,即可领取。

Docker

Docker 是一个容器化平台,它能够让开发者打包应用程序、和所有依赖项到一个标准化的容器中,如下图所示:

容器技术本质是:对计算机资源的隔离与控制,就像上图的一个集装箱一样,把程序装进集装箱,然后可以在不同的环境中轻松地移动和部署。

Docker实现原理

Docker有三个核心组件,如下图所示:

分别是:Docker镜像、Docker容器、Docker仓库,三者之间的关系如下:

第一:Docker 镜像

Docker 镜像是容器的基础,每个容器都基于一个镜像运行。

Docker 镜像是一个只读的模板,包含了:运行容器所需的文件系统内容、环境变量、程序配置等。

镜像可以基于其他镜像构建,并且是层叠的,每一层都代表了对原始镜像的修改,镜像可以从 Docker Hub 、或者私有仓库中获取。

第二:Docker容器

容器,是一个独立、轻量级的运行环境,包含了应用程序及其所有依赖项。

Docker 容器是镜像的运行实例,可以被创建、启动、停止、删除。

第三:Docker仓库

Docker 仓库,是存储和分享 Docker 镜像的地方,开发者可以从仓库中获取镜像,并将自己的镜像推送到仓库中。

Docker的实现原理:是利用Namespace做资源隔离、用Cgroup做资源限制、利用Union FS做轻量级虚拟化技术。

1.Linux Namespace

Docker 利用 Linux 内核的 Namespace 功能,实现了容器之间的隔离。

每个容器拥有自己独立的命名空间,包括:进程、网络、用户等,使得容器内的进程看起来就像在一个独立的环境中运行一样。

2.Cgroup

Cgroup(Control Groups),是 Linux 内核提供的一种机制,用于限制、和管理进程组的资源使用。

Docker 使用 Cgroup 功能限制源,比如:CPU、内存、磁盘 I/O... 等,都可以限制。

通过 Cgroup,防止某个容器耗尽系统资源,影响其他容器或主机系统的正常运行。

3.Union FS

Union FS(联合文件系统):是一种文件系统技术,允许将多个文件系统挂载到同一个目录下,并将它们合并成一个文件系统。

当创建一个新的容器时,Docker 会在基础镜像的基础上添加一个读写层,这个读写层包含了:容器中新增的文件、和修改过的文件。

这样,容器的文件系统实际上是由多个层组成的,每个层都代表了对原始镜像的修改,从而实现了文件系统的共享和高效利用。

通过 Union FS 技术,还节省了存储空间,因为相同的文件只需要在底层镜像中存储一次,而不是每个容器都复制一份。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8