docker源碼編譯打包指南(docker-ce)

  1. 前提條件:已安裝docker.

docker以每個月發佈一個版本的節奏進行開發。命名規則爲:年份-月份-ce,其中ce表示社區版本。html

本文用的是Docker version 18.06.3-ce。git

Docker CE包含了docker引擎,docker命令行以及打包工具。網上也有其餘以moby或單獨docker引擎打包的經驗,比較之下仍是docker ce編譯打包最爲全面和穩當,這樣打包出來已是rpm包能夠直接安裝,而不是須要手動替換docker的二進制包!github

  1. 下載源碼golang

    git clone https://github.com/docker/docker-cedocker

  1. 163MiB大小的源碼,下載完畢!
cd docker-ce
複製代碼
  1. 切換分支
git checkout -b v18.06.3-ce
複製代碼

3. 進入打包目錄 cd ./components/packaging/rpm/ 這樣隨後獲得的是rpm包,也有另外目錄能夠打deb包,自取。

  1. 編譯打包命令:
make  VERSION=18.06.3-ce ENGINE_DIR=/path-to-docker/docker-ce/components/engine CLI_DIR=/path-to-docker/docker-ce/components/cli centos-7
複製代碼
  1. 果真,不會那麼順利,當即編譯失敗:buildkit not supported by daemon!

6. 上圖可見最終生成的編譯指令是:

docker run --rm -v /root/qzy/docker-src/docker-ce/components/packaging/rpm:/v -w /v alpine chown -R root:root rpmbuild
DOCKER_BUILDKIT=1 docker build  --build-arg GO_IMAGE=golang:1.13.10-buster -t rpmbuild-centos-7/x86_64 -f centos-7/Dockerfile .
複製代碼

其中有DOCKER_BUILDKIT=1,那麼改DOCKER_BUILDKIT=0嘗試。 這個設置在rpm目錄下的Makefile約16行處!保存後能夠繼續編譯了。centos

緣由是下載的docker不支持buildkit,因此須要關閉DOCKER_BUILDKIT.不糾結!bash

  1. 安裝或更新了不少(系統上的)依賴包,從github自行下載了不少代碼塊,進行了10分鐘,報錯:

fatal: unable to access 'https://github.com/krallin/tini.git/': Failed connect to github.com:443; Connection timed out
彷佛是網絡問題,重試!

  1. 確實是網絡問題,重試兩次下載tini完成,繼續下載依賴。 後續又因網絡問題重試了幾回,編譯完成: 網絡

    exit 0標示正常退出了。

  2. 進入docker-ce/components/packaging/rpm/rpmbuild/RPMS/x86_64查看: 工具

  3. 拷貝到其餘機器rpm安裝。先安裝docker-ce-cli後安裝docker-ce,安裝完成後使用docker version查看版本!如遇到問題請回復交流!ui

相關文章
相關標籤/搜索