Windows Containers 大冒險: 術語

前言

在開始介紹具體操做以前,須要向各位不熟悉容器技術的Windows平臺下管理員和開發者作一個基礎概念的普及。並且在閱讀微軟的官方文檔以前,推薦閱讀Docker官方的概覽文檔。由於微軟的文檔中主要說起了Windows Containers的一些特有概念,而容器技術自己的概念並無被着重介紹。所以僅閱讀微軟現有文檔並不能完整的瞭解容器技術。這裏也推薦閱讀由Elton Stoneman編著的Docker on Windows一書來對Windows平臺上的容器技術有一個詳細的瞭解。docker

固然容器技術並非孤立存在的,它和編排調度系統通力合做,助力應用程序的微服務化改造。在Mark大神的Containers: Docker, Windows and Trends一文中介紹了整個故事的來龍去脈。編程

題外話

上文中的Mark大神是誰?windows

簡單來講呢,他是Microsoft Azure現任CTO。一個有我的維基百科頁面的男人。一個踢爆索尼大法Rootkit醜聞的男人。一個給DOS寫NTFS驅動的男人。api

.vxd後綴文件見過沒?CIH聽過麼?都沒有? 年輕真好。)瀏覽器

本文也儘可能經過簡潔的語言讓各位對容器技術有一個快速且基礎的瞭解。安全

名詞解釋

Docker Engine

Docker Enginer是一個包含客戶端和服務器的應用。主要包含如下組件:服務器

  • 後臺服務
  • REST API
  • 基於命令行的客戶端

其中後臺服務在Windows客戶端中服務名是Docker Engine,Windows服務器中的服務名是Docker,若是須要重啓Dokcer服務來讓配置生效的話,還請注意使用正確的服務名。架構

REST API則比較好理解,這是目前主流的對資源進行抽象和管理的方式。編程語言

默認狀況下Docker爲咱們提供了基於命令行的名爲docker的客戶端,實際使用中也可使用其它編程語言自行開發客戶端或者腳原本管理Docker。好比下面就是一個使用Python客戶端的例子。具體能夠閱讀官方SDK文檔微服務

clipboard.png

這些組件的關係可使用Docker官方文檔中的一張圖來解釋。

img02

鏡像(Images)

鏡像是包含容器建立指令的只讀模板。形象點的例子就是在超市中批量販售的空整理箱,整理箱有大有小,對應着基礎的操做系統鏡像也是有大有小的。至於用戶拿整理箱放什麼東西就看用戶本身的需求了。有的用戶在整理箱裏裝好本身開發的設備後再次販售。這個第一次預裝了設備的「整理箱」就是常見的各類官方鏡像,好比MySQL, Postgres, Redis。

容器(Containers)

容器是運行起來的鏡像。對應以前解釋鏡像時使用的例子,就是正在使用的整理箱。這個正在使用的整理箱已經鏈接上了其它設備,裏面的裝備參數也進行了調整。當任務完成後,整個整理箱便被還原成初始狀態,若是沒有特別標記的話,以前設置好的全部參數也丟失了。

倉庫(Registries)

倉庫是保存鏡像的設施。有公共倉庫和私有倉庫的區別。對應以前的例子,就是超市和特供商店的區別。默認狀況下,當執行拉取操做時,Docker會從Docker Hub拉取用戶指定的鏡像。Docker Hub能夠經過瀏覽器訪問。這裏有一點須要注意,Docker訪問倉庫時使用的時HTTPS協議,若是用戶搭建的倉庫沒有配置證書,則須要在非安全倉庫中添加相關倉庫地址。

架構

最終將上述名詞串起來以後,總體使用流程以下:

  1. 從公有倉庫拉取基礎鏡像
  2. 編寫Dockerfile,經過build指令構建鏡像
  3. 經過run指令運行鏡像,並確認容器工做正常
  4. 若是鏡像須要分享到Docker Hub上,則能夠經過push指令推送。若是須要導入到離線環境,則可使用save指令。

如下這張圖則來自Docker官網。
img03

總結

正如文章標題所說的,本文只是例舉了Windows Containers中和Linux Containers中相同的部分,尚未涉及Windows Containers的網路及存儲部分,這兩個部分的內容將在後續詳細討論,盡情期待。

相關文章
相關標籤/搜索