1. 程式人生 > >docker最新程式碼原始碼編譯

docker最新程式碼原始碼編譯

前言

docker的編譯環境非常複雜,但是docker是幹嘛的?環境怎能成為問題,於是docker官方提供了docker編譯環境dockerfile。於是docker編譯就非常簡單了。

獲取原始碼

拉取最新的docker原始碼

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

由於docker是個大專案,那當然原始碼檔案眾多,你一般的網路很有可能就中途出錯了。如果你在國外有一臺伺服器,那強烈推薦你去伺服器上下載。如果沒有。這裡我下載了最新(2016-12-09)的程式碼打了個tar包你可以直接下載:

http://www.yiyun
.pro/docker.tar

下載解壓後你可以進行git更新操作。

檢視dockerfile檔案

在docker原始碼主目錄中有當前版本的dockerfile。比較複雜,如果你有興趣可以看看到底需要哪些環境。

製作映象

那麼問題又來了,我們處在網路很好的天國。所以你別想docker build -t docker-dev:xx .就能或者直接make build製作映象了。有大量的檔案無法下載。那麼怎麼辦呢?還是那個辦法,去國外伺服器。沒有?下載我做的映象:為了讓你下載快,我也打了tar包:

# wget http://www.yiyun.pro/docker-dev.tar
# docker load -i docker-dev.tar

執行完成你本地就會有映象docker:dev

編譯

有了映象就容易了。首先開啟makefile檔案修改變數:

# 找到以下:
DOCKER_IMAGE := docker-dev$(if $(GIT_BRANCH_CLEAN),:$(GIT_BRANCH_CLEAN))
# 改成:
DOCKER_IMAGE := docker:dev
# 找到:
build: bundles init-go-pkg-cache
    docker build ${BUILD_APT_MIRROR} ${DOCKER_BUILD_ARGS}
-t "$(DOCKER_IMAGE)" -f "$(DOCKERFILE)" . #改成: build: bundles init-go-pkg-cache

同時你可以看看整個makefile ,我們的目的就是不讓他製作映象了同時使用我們之前做好的映象。

make all:將會全部編譯和跑測試
make binary:編譯二進位制
還有很多其他的就根據你的需要選擇了。
編譯的二進位制在目錄bundles
本文來自一雲部落格:http://blog.yiyun.pro