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源码构建分为两个部分:

  1. 构建dockerd构建环境容器:docker-dev
  2. 使用docker-dev容器来构建dockerd程序。


docker-dev容器构建

  执行如下命令就能够成功构建docker-dev容器:

git clone -b xxx https://github.com/moby/moby.git
cd moby
make build

  一切顺利的情况下,一般来说,上面的容器环境能够成功搭建。但是如果你在国内,99%的可能性不能搭建成功。

  下面有几个地方需要处理:

  1. moby/Dockerfile是docker-dev容器的配置文件,里面的每一个FROM指令(或者自己识别带了docker/http/https/git等下载相关指令的)下面,需要通过RUN或者ENV等等指令设置 docker/http/https/git 等环境的代理。
  2. 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等尽量设置代理。





后记


  无

参考文献




打赏、订阅、收藏、丢香蕉、硬币,请关注公众号(攻城狮的搬砖之路)
qrc_img

PS: 请尊重原创,不喜勿喷。

PS: 要转载请注明出处,本人版权所有。

PS: 有问题请留言,看到后我会第一时间回复。

posted on 2024-08-04 18:42  SkyOnSky  阅读(28)  评论(0编辑  收藏  举报

导航