docker&dockerd源码构建
PS:要转载请注明出处,本人版权所有。
PS: 这个只是基于《我自己》的理解,
如果和你的原则及想法相冲突,请谅解,勿喷。
环境说明
无
前言
在docker公司的网站上已经提供了绝大部分平台的预构建的安装包情况下,为什么要自己构建docker及dockerd呢?因为我们需要定制docker的一些功能或者命令,例如:增加docker命令做特殊响应,docker相关加密等等。
docker基本架构简介
docker实际分为两个部分,一个是dockerd守护程序,一个是docker前端程序,他们之间通过uds连接。docker通过解析前端用户命令,并调用相关网络接口访问dockerd,dockerd执行具体的操作,并返回相关内容给docker。
dockerd的源码库是:https://github.com/moby/moby.git
docker的源码库是:https://github.com/docker/cli.git
dockerd源码构建
dockerd源码构建分为两个部分:
- 构建dockerd构建环境容器:docker-dev
- 使用docker-dev容器来构建dockerd程序。
docker-dev容器构建
执行如下命令就能够成功构建docker-dev容器:
git clone -b xxx https://github.com/moby/moby.git
cd moby
make build
一切顺利的情况下,一般来说,上面的容器环境能够成功搭建。但是如果你在国内,99%的可能性不能搭建成功。
下面有几个地方需要处理:
- moby/Dockerfile是docker-dev容器的配置文件,里面的每一个FROM指令(或者自己识别带了docker/http/https/git等下载相关指令的)下面,需要通过RUN或者ENV等等指令设置 docker/http/https/git 等环境的代理。
- moby/contrib/download-frozen-image-v2.sh文件会下载一些容器层,需要设置http/https的代理。
dockerd程序构建
执行如下命令就能够成功构建dockerd程序:
cd moby
# 构建x86-64 linux版本
docker buildx bake --set binary.platform=linux/amd64
# 构建arm64 linux版本
docker buildx bake --set binary.platform=linux/arm64
构建成功后,可以在moby/bundles/binary目录里面看到对应的构建成功的文件:dockerd和docker-proxy 两个文件。
docker 源码构建
docker源码构建简单,基本还是和dockerd构建类似:
执行如下命令就能够成功构建dockerd程序:
git clone -b xxx https://github.com/docker/cli.git
cd cli
# 构建x86-64 linux版本
docker buildx bake --set binary.platform=linux/amd64
# 构建arm64 linux版本
docker buildx bake --set binary.platform=linux/arm64
构建成功后,可以在cli/build目录里面看到对应的构建成功的文件:docker-linux-amd64 或者 docker-linux-arm64。
注意,和构建dockerd的docker-dev容器类似,这里构建的时候也会拉取一些容器来构建,如果遇到了一些错误,也需要对 docker/http/https/git等尽量设置代理。
后记
无
参考文献
PS: 请尊重原创,不喜勿喷。
PS: 要转载请注明出处,本人版权所有。
PS: 有问题请留言,看到后我会第一时间回复。