理解Docker——深入引擎室
每天與你分享 IT好書 技術幹貨 職場知識
本文大概
3301
字
讀完共需
9
分鐘
本文主要內容
Docker的架構
在用戶的宿主機上追溯Docker的內部結構
使用Docker Hub查找和下載鏡像
設置自己的Docker註冊中心(registry)
實現容器間的相互通信
掌握Docker的架構是更全面地理解Docker的關鍵。在本文中,讀者將在自己的主機和網絡上對Docker的主要組件進行大致了解,並學習一些有助於增進這種理解的技巧。
在這個過程中,將學習一些有助於更有效地使用Docker(及Linux)的小竅門。後續的更高級的很多技巧都是基於這裏所見的部分,因此請特別留意以下內容。
1.1 Docker的架構
圖1-1展示了Docker的架構,這將是本文的核心內容。我們將從高層次視角入手,然後聚焦到每個部分,使用設計好的技巧來鞏固理解。
宿主機上的Docker(在編寫本文時)分成兩個部分:一個具有REST風格API的守護進程,以及一個與守護進程通信的客戶端。圖1-1展示的是運行著Docker客戶端和守護進程的宿主機。
REST風格 一個REST風格API是指使用標準HTTP請求類型,如
GET
、POST
、DELETE
等,來執行通常符合HTTP設計者預想的功能的API。
調用Docker客戶端可以從守護進程獲取信息或給它發送指令。守護進程是一個服務器,它使用HTTP協議接收來自客戶端的請求並返回響應。相應地,它會向其他服務發起請求來發送和接收鏡像,使用的同樣是HTTP協議。該服務器將接收來自命令行客戶端或被授權連接的任何人的請求。守護進程還負責在幕後處理用戶的鏡像和容器,而客戶端充當的是用戶與REST風格API之間的媒介。
圖1-1 Docker架構概覽
私有Docker註冊中心是存儲Docker鏡像的一項服務,可以從任何有相應權限的Docker守護進程向其發送請求。這個註冊中心處於內部網絡中,不能公開訪問,因此被視為是私有的。
宿主機一般坐落在一個私有網絡上。在收到請求時,Docker守護進程將連接互聯網來獲取鏡像。
Docker Hub是由Docker公司運營的一個公共的註冊中心。互聯網上也存在其他公共的註冊中心,且Docker守護進程可與之進行交互。
在前文中我們說可以將Docker容器分發到任何能運行Docker的地方——這並不完全正確。實際上,只有當守護進程可以被安裝到機器上時,容器才能在這臺機器上運行。最明顯的事實是,Docker客戶端可以運行在Windows上,但守護進程(還)不行。
理解這張圖的關鍵在於,當用戶在自己的機器上運行Docker時,與其進行交互的可能是自己機器上的另一個進程,或者甚至是運行在內部網絡或互聯網上的服務。
現在,對Docker的結構有了大致的印象,我們來介紹幾個與圖中不同部分有關的技巧。
1.2 Docker守護進程
Docker守護進程(見圖1-2)是用戶與Docker交互的樞紐,因而它是理解所有相關部分的最佳切入點。它控制著用戶機器上的Docker訪問權限,管理著容器與鏡像的狀態,同時代理著與外界的交互。
圖1-2 Docker守護進程
守護進程與服務器 守護進程是運行在後臺的一個進程,不在用戶的直接控制之下。服務器是負責接受客戶端請求,並執行用於滿足該請求所需的操作的一個進程。守護進程通常也是服務器,接收來自客戶端的請求,為其執行操作。
docker
命令是一個客戶端,而Docker守護進程則作為服務器對Docker容器和鏡像進行操作。
我們來看幾個技巧,這些技巧用於展示Docker作為守護進程高效運行,同時使用docker
命令與其進行的交互被限制為執行操作的簡單請求,就像與Web服務器進行交互一樣。第一個技巧允許其他人連接你的Docker守護進程,並執行與你在宿主機上所能執行的相同操作,第二個技巧說明的是Docker容器是由守護進程管理的,而不是你的shell會話。
1.3 Docker客戶端
Docker客戶端(見圖1-3)是Docker架構中最簡單的部件。在主機上輸入docker run
或docker pull
這類命令時運行的便是它。它的任務是通過HTTP請求與Docker守護進程進行通信。
圖1-3 Docker客戶端
在本節中,讀者將看到如何監聽Docker客戶端與服務器之間的信息,還將看到一些與端口映射有關的基本技巧,這是向本文後續的編排章節邁進的一小步,也是使用瀏覽器作為Docker客戶端的一種方式。
本文摘自《Docker實踐》
《Docker實踐》
艾丹 ? 霍布森 ? 塞耶斯(Aidan Hobson Sayers), 【美】伊恩 ? 米爾(Ian Miell)
點擊封面購買紙書
本文由淺入深地講解了Docker,涵蓋從開發環境到DevOps流水線再一路到生產環境的整個落地過程。書中介紹Docker的核心概念和架構,以及將Docker和開發環境有機、高效地結合起來的方法,包括用作輕量級的虛擬機以及與構建和宿主機編排、配置管理、精簡鏡像等。本文還通過“問題/解決方案/討論”的形式,將等一系列難題拆解成101個相關的實用技巧,為讀者提供解決方案以及一些實踐經驗。
延伸推薦
2018年2月新書
2018年1月重磅新書
小學生開始學Python,最接近AI的編程語言:安利一波Python書單
政策升溫:大家都在學大數據,一大波好書推薦
一本基於Python語言的Selenium自動化測試書
8本新書,送出一本你喜歡的
AI經典書單| 入門人工智能該讀哪些書?
點擊關鍵詞閱讀更多新書:
Python|機器學習|Kotlin|Java|移動開發|機器人|有獎活動|Web前端|書單
長按二維碼,可以關註我們喲
每天與你分享IT好文。
在“異步圖書”後臺回復“關註”,即可免費獲得2000門在線視頻課程;推薦朋友關註根據提示獲取贈書鏈接,免費得異步圖書一本。趕緊來參加哦!
掃一掃上方二維碼,回復“關註”參與活動!
點擊閱讀原文購買《Docker實踐》
閱讀原文
理解Docker——深入引擎室