如何偵錯docker中的原始程式碼?
調試docker中原始程式碼的方法:
經過研究docker的官方編譯腳步,發現本地編譯也很簡單,只需要在docker原始碼的目錄下執行以下指令即可:
./hack/make.sh binary
上面這條指令就只會產生docker的二進位文件,不過肯定不會這麼順利的,執行這個指令你就會發現錯誤。如果第一次執行報的錯誤應該是找不到對應的go依賴包。那現在就開始解決第一個問題,go依賴套件。
解決go依賴包最直接的方法就一個一個去github或其他地方去下載到本地,但是這樣做很麻煩,docker依賴的go語言包很多,然後依賴包可能又依賴其他包。這裡有一個簡單實用的辦法,也是go語言管理專案的方便之處。透過go get指令來自動下載,例如發現報錯的是docker某一個目錄下的依賴包,那麼可以如下執行:
go get -v ./src/github.com/docker/docker/...
這條指令執行以後整個docker目錄下原始檔依賴的套件都會被自動下載。如果發現其他目錄下原始檔也報同樣的錯誤,可以用次方法解決。不過這裡要強調一點, 這些下載都是會下載最新的包,如果編譯老的docker肯定會出問題 ,如果編譯最新的docker程式碼肯定不會有問題,因為官方的編譯是這種方式。
上面執行的指令都是建立在go語言環境建立成功的基礎上,我安裝的go遇到是1.3.3版本的,採用源碼方式安裝。安裝在/export/servers/go
下面,然後所有的go語言工程原始碼目錄放在 /export/servers/gopath
。然後配置環境變數在使用者的根目錄下的.bashrc
檔案裡面如下:
export GOPATH=/export/servers/gopath export GOROOT=/export/servers/go export GOARCH=amd64 export GOOS=linux
推薦教學:《docker影片教學》
以上是如何調試docker中的原始碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!