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: 有問題請留言,看到后我會第一時間回復。
浙公網安備 33010602011771號