Docker源碼分析--環境搭建


     Docker的最新版本使用很多第三方的庫,作為一個Golang的新手,不想過早的陷入各種庫的細節當中,所以我選擇了一個比較早期的版本1.20版本來研究,這也是《Docker源碼分析》這本書中使用的版本,方便一邊讀書一邊實踐。

     源碼可以從給這里下載

     開發環境:

     OS  : Ubuntu 18.04

     IDE : Goland 

     docker源碼中路徑的引用為“github.com/docker/docker/api”,所以我們需要把壓縮包解壓之后,放在GOPATH的正確路徑下。

     

     docker的main函數的入口在github.com/docker/docker/docker這個目錄下面,切到這個目錄下編譯會直接報錯:

     

     主要是報兩個錯誤:

     第一個是由於import的路徑導致的,實際上docker把自身依賴的一些第三方的包放在了docker/docker/vendor目錄下,代碼中的導入路徑為“github.com/docker/docker/vendor/src/code.google.com/p/go/src/pkg/archive/tar”這種形式,可能是新版本的Go或者是goLand IDE已經識別出來了vendor這個目錄,所以要求直接通過“src/code.google.com/p/go/src/pkg/archive/tar”這種方式來導入,由於自己沒有在IDE中找到對應的設置以及對於Golang的module還不太熟悉,打算暫時先繞過這個錯誤,采用了一個比較笨的方法:全局搜索github.com/docker/docker/vendor/替換為空就可以了。

       

      第二個是libcontainer依賴未安裝導致的,直接go get下載即可。

      解決這兩個錯誤之后就可以順利編譯成功了,這里新建一個goLand的調試配置,打算實際調試一下docker info這個客戶端命令,配置如下:

      

      在 docker/docker/api/client/commands.go 文件的CmdInfo函數下斷點,啟動調試,即可看到程序被正常斷下來了,Ubuntu上我安裝過docker,所以docker info最終也是有響應數據的。

      

 

 

 

 

     

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM