Container Docker 容器

Docker工具新手入門 用指令熟悉容器生命週期

2017-08-03
上期的文章已經詳細介紹過什麼是「容器」(Container),並指出它與虛擬化技術的差異在那裡。有了基本的觀念之後,本文將繼續說明說明與Docker容器相關的工具以及專有名詞,讓大家對於Docker容器技術有更進一步的了解。

前期文章介紹了容器的基本觀念和虛擬化技術的差異,還有正確容器使用方式是應用系統式容器,而非所有都包裝在一起高度耦合的虛擬機式容器,容器已成為PaaS(平台即服務)的主要部署方式,逐漸轉變成CaaS(Container as Service,容器即服務)形式。接下來說明Docker容器相關工具和名詞定義,方便學習Docker容器技術。

認識Docker生態系工具

Docker公司將內部Docker專案放上GitHub開源之後,獲得資訊人員的熱烈喜愛和關切,因而從單機的Docker容器工具衍生出圍繞在容器的相關工具,進而擴大Docker技術的影響力和Docker公司營運模式的後續規劃。

隨著版本更新而逐步推出新的相依工具,讓Docker軟體可以更貼近資訊人員的需要,正如一開始主要目標是改善了使用者對容器技術的易用性,試著延伸去解決多台容器主機、雲端虛擬化平台支援等相關使用上的種種問題。

Docker Engine

Docker生態工具中最先發展的是Docker Engine,用來控制容器沙箱,容器是一個執行環境,可以包含完整作業系統,或是單純只有應用程式和相關函式庫,目前大多數說的Docker其實都是指Docker Engine。

Docker Compose

Docker Compose原本是英國Fig新創團隊所開發(http://www.fig.sh),後來被Docker併購,改名為Compose(圖1)。大多數人在使用Docker過程中往往會需要同時部署多個容器並將它們整合使用,例如部署一個網頁服務容器和資料庫服務容器,同時需要將它們串接起來,當容器數量變多後,手動管理就變得不方便,透過撰寫compose.yml檔案來整合多個容器建置出服務架構,並可應用到測試所需要的沙箱環境,甚至可整合成自動化測試流程,非常方便。


▲圖1 Docker Compose圖案。

Docker Machine

Docker Machine開源專案(圖2)支援多種虛擬化平台,包括AWS、Azure、VMware vSphere以及VirtualBox等等,負責建立管理內建Docker Engine的虛擬機,使用者在本地端就可遠端登入虛擬機操作,只須執行「docker-machine ssh VM_NAME」,因此只要學習Docker Machine指令即可控制多個雲端平台,開通防火牆後,就可輕易建立跨雲端的容器叢集系統。


▲圖2 Docker Machine圖案。

Docker Swarm Mode

前面提到的Docker Machine建立容器叢集,指的就是Docker Swarm功能(圖3),原本是獨立的一套工具,在Docker Engine 1.12版之後,整併為內建功能,無須另外安裝,這是Docker官方對容器叢集系統所推出的解決方案,定位類似Google的Kubernetes,但目前技術社群和廠商支援性,仍不及Kubernetes(K8S),優勢是迅速輕鬆就可架設,使用情境單純,完全相容Docker Engine API,原生支援無須額外安裝程式。


▲圖3 Docker Swarm圖案。

Docker Registry

Docker Registry(圖4)主要用來儲存Docker映像檔,提供個人或企業架設一個類似Docker Hub的私有映像檔存放伺服器,避免使用Docker Hub對外公開內含機敏資料的映像檔(Docker Hub免費帳號只允許存放一個私有映像檔),當然自架有很多環節必須顧慮,如網路穩定性、資料儲存備份和權限管理等,因此建議直接使用雲端平台所提供的代管服務,如Amazon EC2 Container Registry、Azure Container Registry、Google Container Registry,可避免系統管理上的諸多麻煩。


▲圖4 Docker Registry圖案。

Docker Datacenter

Docker Datacenter(圖5)是Docker官方提供的付費服務,可代管Docker Registry服務,並建置和測試容器化的應用程式映像檔,協助企業設定、建置和管理容器伺服器基礎架構的工具,並代管容器所建置的系統服務,其實就是文章一開頭所稱的CaaS(Container as Service)服務。


▲圖5 Docker Datacenter圖案。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!