Docker容器工作原理详解(图文全面总结)

Docker是云原生的核心,掌握好Docker容器更有利于掌握好Docker@mikechen

Docker

Docker最初是由一家名为dotCloud的公司开发的,该公司后来更名为Docker Inc。

Docker通过提供一个简单易用的工具和平台,极大地简化了容器的创建、部署和管理。

尽管Linux容器技术早已存在,但直到2013年,Docker的出现才真正使其变得普及。

Docker容器工作原理详解(图文全面总结)-mikechen

在 2013 年的 PyCon 大会 上,Solomon 发布了 Docker 项目的第一个版本,并宣布开源。

一夜之间,Docker 引爆了技术圈:

  • 开发者用它来“打包运行环境”;

  • 运维用它来“一键部署”;

  • 大公司纷纷拥抱(Google、Red Hat、AWS、Microsoft…)。

这标志着容器从“底层技术”转变为“开发部署标准”。

 

Docker容器原理

Docker的核心在于其三个关键组件:镜像(Images)、容器(Containers)和仓库。

Docker容器原理,如下图所示:

Docker容器工作原理详解(图文全面总结)-mikechen

Docker镜像

Docker 镜像是一个只读模板,用于创建 Docker 容器。

Docker容器工作原理详解(图文全面总结)-mikechen

它包含了应用运行所需的所有内容:操作系统环境、程序文件、库、配置等。

镜像基于 UnionFS(联合文件系统) 构建,由多层叠加组成,每一层代表一次变更:

Docker容器工作原理详解(图文全面总结)-mikechen

+-------------------------+  ← 应用层(如 Flask 程序)
| app.py, requirements.txt|
+-------------------------+  ← 依赖层(pip install flask)
| Python 环境             |
+-------------------------+  ← 基础层(Ubuntu / Alpine)
| 操作系统基础环境        |
+-------------------------+

这些层彼此独立、可复用,从而提高镜像构建效率。

 

Docker容器

容器是镜像运行后的实例,是一个隔离的进程环境,拥有自己的文件系统、网络、PID 空间等,但共享宿主机内核。

Docker容器工作原理详解(图文全面总结)-mikechen

Docker 在运行容器时会做以下几件事:

  1. 读取镜像并加载只读层;

  2. 创建一个新的可写层(容器层);

  3. 启动容器进程(PID=1);

  4. 设置命名空间(Namespace)和资源限制(Cgroups)。

容器提供了一个隔离的运行环境,使得应用程序可以在其中独立运行,互不干扰。

 

Docker仓库

仓库是集中存储和分发镜像的地方,就像 GitHub 是代码的仓库,Docker Hub 是镜像的仓库。

Docker容器工作原理详解(图文全面总结)-mikechen

三者关系,如下:

   ┌────────────┐
   │  镜像 Image│  ← 构建于 Dockerfile
   └────┬───────┘
        │
 docker run
        ↓
┌───────┴───────┐
│   容器 Container│ ← 镜像的运行态 + 可写层
└───────┬───────┘
        │
docker commit/push
        ↓
┌───────┴───────┐
│ 仓库 Registry  │ ← 存储与共享镜像的平台
└───────────────┘

镜像是构建基础,容器是运行实例,仓库是镜像来源。

三者构成了 Docker 技术的完整闭环,支撑起整个容器生态系统。

mikechen

mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复架构即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法