天天看點

從持續內建到持續傳遞——Docker Cloud概覽

本文講的是<b>從持續內建到持續傳遞——Docker Cloud概覽</b>【編者的話】本文介紹了Docker Cloud的概況,以及如何使用Docker Cloud改進我們的持續內建和持續釋出的流程。也指出了目前Docker Cloud還存在的功能方面的問題。

容器化(Docker容器),持續內建(CI),持續部署或持續傳遞(CD)是簡化DevOps工作的終極方案。這展示了一個未來的場景:當代碼被送出到代碼庫之後,所有的後續工作包括編譯、配置、傳遞和部署,甚至是高可用性都是完全标準化和自動化的。從這個角度我們可以看到一個美好的未來,将開發人員和運維人員從繁複的工作中解放出來,節省出來的人力資源可以更專注在更加創造性的開發工作。

從Docker的第一版本釋出以來,這個公司持續行進在一個正确的方向上前進,雖然前進的有點慢。盡管如此,在Docker收購Tutum一年之後,Docker最終釋出了正式的雲服務Docker Cloud(cloud.docker.com)。現在圍繞Docker的生态系統已經接近完備了。

在深入到Docker Cloud的技術細節之前,讓我們看一下Docker的鏡像倉庫和自動建構服務——Docker Hub(hub.docker.com)。作為我使用了将近一年的CI工具,我覺得它還是非常好用的。它的工作方式也是很簡單的,你隻需要寫好一個Dockefile并把它放在GitHub或者Bitbucket上,Docker Hub就會在每次代碼送出之後自動建構Docker鏡像并将其放置到Docker Hub鏡像倉庫上提供下載下傳。

從持續內建到持續傳遞——Docker Cloud概覽
從持續內建到持續傳遞——Docker Cloud概覽

當然,這個建構過程會在每次代碼送出時被執行。

2016年3月,Docker釋出了Docker Cloud的第一個版本。現在,在Docker Cloud上,我們可以添加我們資料中心或者AWS中的伺服器添加到Docker Cloud中讓Docker Cloud來控制它。是以無論是AWS或者Google或者Linode的虛機,甚至是裸機都可以通過一個簡單的shell腳本指令将其添加到Docker Cloud中,這個shell腳本會在伺服器中安裝一個代理程式并将伺服器轉給Docker Cloud。

從持續內建到持續傳遞——Docker Cloud概覽

Docker Cloud跟傳統的雲服務提供商的主要差別是Docker Cloud本身不提供任何的伺服器或者虛機,隻是提供某種伺服器/服務的管理系統。是以Docker公司可以通過提供持續部署的方案來産生利潤。

将伺服器添加到Docker Cloud的指令是非常簡單的,如下所示:

這個腳本安裝和配置Docker守護程序并設定這個節點到Docker Cloud的通信隧道,是以Docker Cloud就可以管理這個節點上的服務了。

當這些節點配置完成後,我們就可以添加服務了,這意味着我們可以利用政策來部署Docker鏡像到節點上運作。

如果Docker鏡像是來自我們前面提到的Docker Hub,整個設定過程就會非常容易了。

從持續內建到持續傳遞——Docker Cloud概覽

從使用者界面上,我們可以設定部署政策是到所有節點,到最空閑的節點或者高可用。 

除了最基本的端口釋出、網絡和存儲配置功能外,Docker Cloud提供了進階的概念例如Stack和服務關聯,這使得平台越來越成熟和完備。

Docker Cloud依然還有一些問題可以被修複,以使得其持續傳遞服務能變得完美:

缺少服務監控,或者測試驅動部署政策。

缺少對持久存儲的管理。

在每個Docker Cloud節點上都需要安裝高權限的代理程式,在企業環境中将會造成嚴重的安全問題。

每次我都在思考徹底擺脫指令行終端和ssh,隻需要簡單的将代碼送出到某個分支,然後服務就會被部署到合适的伺服器上去。在任何時候都會有一個程序去去監控并在合适的時候重新部署或者彈性擴充。這樣将會極大的提高疊代的速度和效率,還有一個好處是我們将無需再擔心運維人員可能會犯的錯誤。想到這裡,我是非常興奮的。

<b>原文釋出時間為:</b>2016-09-13

<b>本文作者:</b>李光成

<b>本文來自雲栖社群合作夥伴Dockerone.io,了解相關資訊可以關注Dockerone.io。</b>

<b></b>

<b>原文标題:</b><b>從持續內建到持續傳遞——Docker Cloud概覽</b>