前言
docker 大方向由客户端和对应的服务端组成。docker 的发展过程的演化还是挺大的,这里面有主观因素(代码解耦)也有客观因素(各厂商对容器标准化的推进)。
docker 代码本来是在一个仓库里面的,随着不断的拆解代码分散在各个仓库系统中。有些是拆开后贡献给了开源组织,有些是因为 docker 这家公司改名为 moby 的因素。
docker 组成
通过 docker version
命令可以直观看到 docker 的核心组建。(不同版本内容不一样)
adeMacBook-Pro:system zhourj$ docker version
Client:
Cloud integration: v1.0.22
Version: 20.10.12
API version: 1.41
Go version: go1.16.12
Git commit: e91ed57
Built: Mon Dec 13 11:46:56 2021
OS/Arch: darwin/amd64
Context: default
Experimental: true
Server: Docker Desktop 4.5.0 (74594)
Engine:
Version: 20.10.12
API version: 1.41 (minimum version 1.12)
Go version: go1.16.12
Git commit: 459d0df
Built: Mon Dec 13 11:43:56 2021
OS/Arch: linux/amd64
Experimental: true
containerd:
Version: 1.4.12
GitCommit: 7b11cfaabd73bb80907dd23182b9347b4245eb5d
runc:
Version: 1.0.2
GitCommit: v1.0.2-0-g52b36a2
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Kubernetes:
Version: v1.17.9-r0-CCE20.8.1.3.B001-17.36.5
StackAPI: Unknown
各组件对应的代码仓库
- Client:https://github.com/docker/cli
Server
docker-ce: https://github.com/docker/docker-ce 这个是早期代码仓库,现在已经废弃了,都挪到上面的仓库了。
架构总览
在 v1.11 之前到版本中,containerd 模块是在 docker engine 里面的,这部分存放了 docker 最核心的一些功能模块:
- 镜像推送、拉取
- 容器运行时生命周期管理
- 网络管理
docker 根目录说明
/var/lib/docker
# tree -L 2
.
├── builder
│ └── fscache.db
├── buildkit
│ ├── cache.db
│ ├── content
│ ├── executor
│ ├── metadata.db
│ └── snapshots.db
├── containerd
│ └── daemon
├── containers
│ ├── 05b5579901c2f8ed0b331d15f86123980b3e5dd396b3522df7c18c55ce82d17a
│ ├── 10fd395b576beeccd08e70f539ccfe0a58f25b94c0e197463b0679920f157a51
│ ├── ...
├── image
│ └── overlay2
├── network
│ └── files
├── overlay2
│ ├── 009ac586b5f71c0594d67f27f8ca429d8b07973c718d19c63ed020d95785391e
│ ├── 00eec4d6f6a47ca2ca1764358f423f9503f68ea54d37681808a74ce44de056e8
│ ├── 011001c2600e54f78cfe212cac4076587718cc3e2814e03f07f4808ac782d1ae
│ ├── ...
│ └── l
├── plugins
│ ├── storage
│ └── tmp
├── runtimes
├── swarm
├── tmp
├── trust
└── volumes
├── cc1d3e29d6287c6793a896d9b5942af59c32640ba44497a904ac7afa7e7a0871
├── fa7b3a4137367ca03f05333b814d29227265927e93c0ac2fcab5743c61d51519
├── metadata.db
├── runner-dy3ord-u-project-1-concurrent-0-cache-3c3f060a0374fc8bc39395164f415a70
└── runner-dy3ord-u-project-1-concurrent-0-cache-c33bcaa1fd2c77edfc3893b41966cea8
containers
容器实例的配置信息: hosts、resolv.conf、mount 等
overlay2
存储镜像层信息
images
镜像到元数据信息,指明镜像的仓库、tag 等信息,具体镜像本身是存储在 overlay2 里面到
volumes
数据卷
发表评论 取消回复