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

Docker 是大型架构的必备中间件,下面我重点来详解Docker运行原理@mikechen

Docker

Docker 是容器化平台,它允许开发者将应用程序、及其所有依赖项,打包到一个可移植的容器中。

然后可以在任何支持 Docker 的环境中,以相同的方式运行,解决了传统软件开发和部署中环境不一致导致的问题。

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

核心目标: “Build once, run anywhere”(一次构建,到处运行)。

 

Docker运行原理

Docker运行原理,主要会包含如下组件:

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

主要会涉及到:Docker镜像、Docker容器、Docker仓库…等组件。

Docker镜像

Docker镜像 (Image): 是构建容器的基础。

镜像是只读的模板,包含了运行应用程序所需的所有文件和配置,可以把镜像看作是应用程序的“安装包”。

Docker 镜像是一个只读的、分层构建的文件系统快照。

每一个镜像由多个层(layer)组成,如下图所示:

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

底层通常是基础操作系统(如 alpineubuntu)。

每个 Dockerfile 指令(如 RUNCOPY)都会形成一个新层。

使用 UnionFS/OverlayFS …等联合挂载文件系统,将多层合并为一个整体。

 

Docker容器

Docker 容器是镜像的运行时实例,具有读写权限、和独立运行空间。

一个镜像,可以创建多个容器,每个容器都是相互隔离的运行环境,可以把容器看作是应用程序的“运行态”。

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

Linux 命名空间提供了轻量级的虚拟化形式,可以将操作系统的全局资源进行隔离,使得每个容器都认为自己拥有独立的资源。

包括:

  • PID:进程隔离;

  • NET:网络隔离;

  • MNT:挂载点隔离;

  • IPC:信号量等隔离;

  • UTS:主机名隔离;

  • USER:用户权限隔离。

 

Docker仓库

仓库 (Registry) :是存储和分发镜像的场所: 仓库用于集中存储和管理 Docker 镜像。

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

用户可以从仓库拉取镜像到本地运行容器,也可以将本地构建的镜像推送到仓库进行共享。

可以把仓库看作是应用程序“安装包”的存储、和分发中心。

三者紧密工作,首先,在本地通过 Dockerfile 构建了一个镜像(Image),上传到 Docker Hub(Registry);

生产环境中的主机拉取这个镜像并启动容器(Container),容器中运行的是具体的业务应用。

总之,Docker通过镜像、容器和仓库三者的紧密结合,实现了应用的快速构建、分发和运行。

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧