前言

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

各组件对应的代码仓库

docker-ce: https://github.com/docker/docker-ce 这个是早期代码仓库,现在已经废弃了,都挪到上面的仓库了。

架构总览

image.png

在 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

数据卷

相关文章

点赞(3) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部