- Docker源碼分析
- 孫宏亮
- 472字
- 2018-12-31 20:27:01
1.4.1 docker pull
1.3節中我們提到,用戶可以為容器指定鏡像,作為容器運行時的rootfs,既然如此,鏡像從何而來則成為一個關鍵。答案很簡單,一切都歸功于docker pull命令。
docker pull命令的作用是:Docker Daemon從Docker Registry下載指定的容器鏡像,并將鏡像存儲在本地的Graph中,以備后續創建Docker容器時使用。docker pull命令的執行流程如圖1-10所示。
圖1-10中有編號的箭頭表示docker pull命令在發起后,Docker架構中相應模塊所做的一系列運行操作。下面我們逐一分析這些步驟。
1)Docker Client處理用戶發起的docker pull命令,解析完請求以及參數之后,發送一個HTTP請求給Docker Server,HTTP請求方法為POST,請求URL為"/images/create?"+"xxx",實際意義為下載相應的鏡像。
2)Docker Server接收以上HTTP請求,并交給mux.Router,mux.Router通過URL以及請求方法類型來確定執行該請求的具體handler。
3)mux.Router將請求路由分發至相應的handler,具體為PostImagesCreate。
4)在PostImageCreate這個handler之中,創建并初始化一個名為"pull"的Job,之后觸發執行該Job。
5)名為"pull"的Job在執行過程中執行pullRepository操作,即從Docker Registry中下載相應的一個或者多個Docker鏡像。
6)名為"pull"的Job將下載的Docker鏡像交給graphdriver管理。
7)graphdriver負責存儲Docker鏡像,一方面將實際鏡像存儲至本地文件系統中,另一方面為鏡像創建對象,由Docker Daemon統一管理。

圖1-10 docker pull命令執行流程示意圖
- 大前端三劍客:Vue+React+Flutter
- CAE分析大系:ANSYS?Workbench結構分析與實例詳解
- 高質量軟件構建方法與實踐
- UML基礎與Rose建模案例(第3版)
- 數字化轉型架構:方法論與云原生實踐
- 百度SEO一本通
- 基于Pro/Engineer Wildfire的直齒圓錐齒輪虛擬設計與制造
- 軟件開發大講堂·從入門到精通-第一輯(套裝共5冊)
- 軟件架構指標:度量軟件系統的性能和架構質量
- 云原生網關Traefik:入門、進階與實戰
- 大數據實時流處理技術實戰:基于Flink+Kafka技術
- 軟件自動化測試成功之道:典型工具、腳本開發、測試框架和項目實戰
- Spring Boot+Vue 3大型前后端分離項目實戰
- Unity 3D游戲開發技術詳解與典型案例
- HTML5游戲編程核心技術與實戰