1. 程式人生 > >理解Docker——深入引擎室

理解Docker——深入引擎室

Docker python

點擊關註 異步圖書,置頂公眾號

每天與你分享 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請求類型,如GETPOSTDELETE等,來執行通常符合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 rundocker 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——深入引擎室