從持續整合到持續交付——DockerCloud概覽
容器化(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映象倉庫上提供下載。
例如,https://hub.docker.com/r/tomasen/frontd/builds/ 就是這樣一個在Docker Hub上自動構建的Docker映象。我可以指定映象的分支並分配不同的標籤。這個流程有助於區分版本,使其更適用於開發或者生產環境。
當然,這個構建過程會在每次程式碼提交時被執行。
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公司可以通過提供持續部署的方案來產生利潤。
將伺服器新增到Docker Cloud的命令是非常簡單的,如下所示:
curl -Ls https://get.cloud.docker.com/ | sudo -H sh -s <token>
這個指令碼安裝和配置Docker守護程式並設定這個節點到Docker Cloud的通訊隧道,因此Docker Cloud就可以管理這個節點上的服務了。
當這些節點配置完成後,我們就可以新增服務了,這意味著我們可以利用策略來部署Docker映象到節點上執行。
如果Docker映象是來自我們前面提到的Docker Hub,整個設定過程就會非常容易了。
從使用者介面上,我們可以設定部署策略是到所有節點,到最空閒的節點或者高可用。
除了最基本的埠釋出、網路和儲存配置功能外,Docker Cloud提供了高階的概念例如Stack和服務關聯,這使得平臺越來越成熟和完備。
未完待續
Docker Cloud依然還有一些問題可以被修復,以使得其持續交付服務能變得完美:
- 缺少服務監控,或者測試驅動部署策略。
- 缺少對持久儲存的管理。
- 在每個Docker Cloud節點上都需要安裝高許可權的代理程式,在企業環境中將會造成嚴重的安全問題。
未來
每次我都在思考徹底擺脫命令列終端和ssh,只需要簡單的將程式碼提交到某個分支,然後服務就會被部署到合適的伺服器上去。在任何時候都會有一個程式去去監控並在合適的時候重新部署或者彈性擴充套件。這樣將會極大的提高迭代的速度和效率,還有一個好處是我們將無需再擔心運維人員可能會犯的錯誤。想到這裡,我是非常興奮的。
原文連結:From CI to CD, Docker Cloud Tour (翻譯:李光成)
原文釋出時間為:2016-09-13
本文作者:李光成
本文來自雲棲社群合作伙伴Dockerone.io,瞭解相關資訊可以關注Dockerone.io。
原文標題:從持續整合到持續交付——Docker Cloud概覽
相關文章
- 持續整合、持續部署、持續交付、持續釋出
- 持續整合、持續交付與持續部署
- 你真的懂持續整合、持續交付、持續部署嗎?!
- 對持續整合、 持續交付、持續部署和持續釋出的介紹
- 持續整合持續部署持續交付_持續整合與持續部署之間的真正區別
- 淺談持續整合(CI)、持續交付(CD)、持續部署(CD)
- 3分鐘瞭解清楚持續整合、持續交付、持續部署
- 如何將 InfoSec、Compliance 整合到持續交付流水線中
- SAP開源的持續整合-持續交付的解決方案
- 持續整合、持續交付和持續部署有什麼區別?0基礎學習linux技能Linux
- 持續交付會如何影響測試
- 雲原生下的DevOps與持續交付dev
- 聊聊持續交付與軟體架構架構
- 快速指南:在DevOps中實現持續交付dev
- eBay透過事件溯源實現持續交付事件
- GitOps | 一種雲原生的持續交付模型Git模型
- 持續交付中的分支管理與版本控制
- 太多指令碼將會毀掉持續交付指令碼
- HTTP非持續連線和持續連線HTTP
- 喬樑專訪——讓持續交付變為可能
- 持續交付探索與實踐(一):交付流水線的設計
- Jenkins持續部署-Windows環境持續部署探究1JenkinsWindows
- 持續整合 2.0
- JVM(持續更新。。。)JVM
- Jenkins持續整合Jenkins
- FastApi持續更新ASTAPI
- 持續整合(二)
- 你的DevOps中有完善的持續交付體系麼?dev
- 雲原生入門第六章:持續交付
- 使用流水線外掛實現持續整合、持續部署
- Angular核心概念一覽表(持續更新中)Angular
- 基於Jenkins + Argo 實現多叢集的持續交付JenkinsGo
- 持續交付體系在高德的實踐歷程
- 關於 K8S 的持續化交付構建K8S
- Git-flow作者稱其不適用於持續交付?Git
- Xcode 技巧 持續更新XCode
- 持續記函式函式
- lambda(持續補充)
- 聊聊持續測試