當前位置:
首頁 > 知識 > 技術集錦:基於AWS ECS構建安全高可用的Docker私有雲

技術集錦:基於AWS ECS構建安全高可用的Docker私有雲

Docker Hub作為Docker官方鏡像倉庫,提供了大量Docker鏡像的託管服務。但使用它來託管企業私有Docker鏡像存在一些問題,比如:

Docker Hub託管私有鏡像的服務目前只面對收費賬戶;

使用Docker Hub託管私有鏡像並不適合一些特殊場景,比如工作環境網路是內網,不允許訪問外網,那就更不可能到Docker Hub去下載鏡像。

在這種情況下,如果能構建一個安全可靠的Docker私有庫,將會是一個更好的選擇。本文將介紹在AWS ECS基礎上結合AWS Elastic LoadBalancer、AWS Autoscaling Group、AWS S3及Docker官方提供的Registry鏡像構建安全、高可用的Docker私有庫的方案,幫助您輕構實現這一需求。

2.方案詳解

我們會使用AWS CloudFormation服務,使用自定義的模板腳本聲明所需的資源,實現自動化構建。接下來結合我們的模板腳本對本方案進行詳細介紹。

注意:以下內容與代碼相關部分只貼出主要代碼,部分代碼用…表示省略;完整模板代碼地址:

https://s3-us-west-2.amazonaws.com/blog.leonli.org/registry.yml

2.1 架構圖

技術集錦:基於AWS ECS構建安全高可用的Docker私有雲

根據以上架構圖,基本數據傳輸過程為:

1)Docker客戶端向鏡像倉庫發送的pull/push等命令事實上都是通過Docker dDaemon轉換成Restful請求的形式再發送給鏡像倉庫的。在本架構中,我們利用AWS Elastic LoadBalancer(簡稱ELB)接收客戶端發來的請求,作為整個架構的接入層。由於我們要求數據是通過TLS加密傳輸的,所以我們需要使用AWS IAM中的Server Certificate(由AWS IAM賬戶上傳的TLS證書)與ELB關聯,實現對客戶端發來的請求進行加密。

2)ELB會將請求反向代理給後端分布在不同可用區的兩台Container Instance(安裝了Docker運行環境的EC2實例),Container Instance中運行了Docker Registry服務。當請求到達Registry時,我們需要首先使用內置在Registry中的用戶認證文件(比如本架構中使用Apache Htpasswd創建的基本用戶名密碼保護文件),進行用戶認證,認證不通過,則駁回請求,認證通過,才可以讀寫數據。

3)將數據統一存儲在一個只供創建者使用的S3 Bucket中。

2.2 基於AWS ECS運行Docker Registry服務

Amazon EC2 Container Service (ECS) 是一項高度可擴展的高性能容器管理服務,它讓您能夠在託管的 Amazon EC2 實例群集上輕鬆運行Docker應用程序。 Amazon ECS主要有以下幾個組件:ECS Cluster、 Container Instance、Task、ECS Service。這裡基於ECS運行了Docker Registry服務,架構如下:

技術集錦:基於AWS ECS構建安全高可用的Docker私有雲

(1)首先在模板中定義了一個ECS Cluster,用來管理相關的Container Instance。ECS提供了ECS-Optimize AMI來創建EC2實例作為Container Instance,ECS-Optimize AMI已經內置Docker運行環境和Container Agent代理,可以為我們節省安裝這些環境所需的時間。

Container Instance在啟動時可以由Container Agent根據配置文件/etc/ecs/ecs.config中的ClusterName屬性的值知道需要將實例註冊到哪個ECS Cluster上。

因為我們要使用Auto Scaling服務實現對EC2實例的伸縮控制。所以我們使用Auto Scaling的Launch Config組件聲明我們的Container Instance。並通過UserData傳入Shell腳本,此腳本主要完成以下三件事:

調用 echo ECS_CLUSTER=${ECSCluster} >> /etc/ecs/ecs.config ,將Container Instance註冊到我們的ECS Cluster中。

創建/docker-registry/certs目錄和/docker-registry/auth目錄,並調用aws s3 copy命令從指定的S3 Bucket中複製TLS證書文件和htpasswd用戶認證文件。這些文件將在運行Docker Registry時使用到。

調用cfn-signal命令,通知AutoScaling Group資源EC2實例已經啟動完畢。

技術集錦:基於AWS ECS構建安全高可用的Docker私有雲

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT168企業級 的精彩文章:

手機NFC功能原來能這樣用 教你如何使用手機NFC無線列印
智慧工廠最新實施報告:美國第一,中國竟不及印度?
黑還是白?你眼中的黑客可能並無惡意!
手把手教你如何構建實際生產環境中的微服務

TAG:IT168企業級 |

您可能感興趣

FAIR最新視覺論文集錦:FPN,RetinaNet,Mask和Mask-X RCNN
FAIR最新視覺論文集錦:FPN,RetinaNet,Mask 和 Mask-X RCNN(含代碼實現)
Mac OS 蘋果電腦 蘋果筆記本 MacBook Pro 使用技巧集錦
Sheriff SWAT圖片集錦1
Android中menu的使用集錦
群星聯賽S7總決賽高光集錦 NiP vs Spirit
大數據分析工程師面試集錦 3-SQL/SparkSql/HiveQL
2019 NICONICO超會議Cosplay集錦
2018 NICONICO超會議Cosplay 集錦
【上海優秀科技成果集錦】黑科技DURA-HEPA 超積塵濾網
Acapella 專業團 EXIT挑戰防彈少年團名曲集錦超精彩
三星Galaxy Watch智能手錶傳言集錦:或與Note 9手機同步發布
用機器學習搞藝術,谷歌 Megenta 項目集錦
圖片集錦-Poulsbo
Louis Vuitton櫥窗陳列集錦
遲到的集錦!DOTA2 ESL卡托維茲站TOP10
收藏|韓國個性女模chomegyu造型集錦
圖賞|MotoGP英國站"爽約"集錦
Django後台代碼質量改善建議集錦(一)
2017慈緣雅集之問禪集錦Some questions about Zen of CiYuan 2017