從持續整合到持續交付——DockerCloud概覽

貓飯先生發表於2017-10-12
本文講的是從持續整合到持續交付——Docker Cloud概覽【編者的話】本文介紹了Docker Cloud的概況,以及如何使用Docker Cloud改進我們的持續整合和持續釋出的流程。也指出了目前Docker Cloud還存在的功能方面的問題。

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

官方的Docker映象倉庫和CI服務

從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映象倉庫上提供下載。

01.png


例如,https://hub.docker.com/r/tomasen/frontd/builds/ 就是這樣一個在Docker Hub上自動構建的Docker映象。我可以指定映象的分支並分配不同的標籤。這個流程有助於區分版本,使其更適用於開發或者生產環境。

02.png


當然,這個構建過程會在每次程式碼提交時被執行。

Docker Cloud!

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

03.png


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

將伺服器新增到Docker Cloud的命令是非常簡單的,如下所示:

curl -Ls https://get.cloud.docker.com/ | sudo -H sh -s <token>


這個指令碼安裝和配置Docker守護程式並設定這個節點到Docker Cloud的通訊隧道,因此Docker Cloud就可以管理這個節點上的服務了。

當這些節點配置完成後,我們就可以新增服務了,這意味著我們可以利用策略來部署Docker映象到節點上執行。

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

04.png


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

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

未完待續

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

  • 缺少服務監控,或者測試驅動部署策略。
  • 缺少對持久儲存的管理。
  • 在每個Docker Cloud節點上都需要安裝高許可權的代理程式,在企業環境中將會造成嚴重的安全問題。


未來

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

原文連結:From CI to CD, Docker Cloud Tour (翻譯:李光成)

原文釋出時間為:2016-09-13

本文作者:李光成

本文來自雲棲社群合作伙伴Dockerone.io,瞭解相關資訊可以關注Dockerone.io。

原文標題:從持續整合到持續交付——Docker Cloud概覽


相關文章