什麼是Docker?它是如何解決業務難題的?

       Docker是一個開發人員容納和輕鬆發佈軟件的平臺。它有助於消除配置環境以運行軟件的開銷,實質上是將環境與代碼一塊兒運送。html

       咱們一般使用裝運容器類比來解釋。貨運公司負責將集裝箱從A運輸到B,他們不關心您放入集裝箱的貨物,但他們確實關心您是否以正確的格式將貨物交給他們。前端

       將您的開發人員視爲將軟件打包到容器的創造者。他們構建的內容可能會因特殊庫、優化或配置而變得複雜。一旦他們準備好運送的軟件,就該把它交給一家知道如何從A到B的貨運公司。幸運的是,如今它採用標準化格式,DevOps能夠輕鬆地將其轉移到生產中。他們甚至能夠自動化這個過程,以便未來更容易。docker

       在本文中,咱們將舉例說明Docker的業務用例,概述如何構建Docker化的微服務,使用Amazon的彈性容器服務(ECS),並概述使用Docker能帶來的的商業利益。 後端

Docker和微服務架構的用例瀏覽器

       假設您的Web應用程序有一個資源密集型的用戶註冊頁面。在每個月月初 新用戶會蜂擁而至。爲了處理負載,您的服務器基礎結構正在幾個大型負載平衡服務器上運行(以下所示)。不幸的是,這種處理規模一年中只有12天。這意味着您的公司將爲大部分時間都沒有使用的資源付費。安全

501.png

        如今,假如一個關鍵功能在註冊過程當中發生了變化:出於法律緣由,用戶須要被置於二級報告系統中。目前,您的註冊代碼隱藏在應用程序的剩餘部分中,將此修復程序移至生產意味着整個系統的徹底從新部署。開發人員和基礎設施將在本週末加班工做,以執行這一更新。最糟糕的是,這僅僅是一個相對較小的變化!服務器

        在Docker化的世界中,這是小case。註冊過程能夠與主應用程序分離,並使用滾動更新推送到生產環境。你能夠星期一作,甚至不須要把網站關閉。無人不爲之喝彩,由於這意味着軟件能夠快速安全地投入生產。網絡

        爲了達到這一點,開發人員能夠經過構建REST服務來啓動解耦註冊過程。一旦Web前端和註冊服務的代碼分離,它們就能夠進行Docker化。開發人員能夠將全部代碼、庫和配置打包到Docker Images中並移交給DevOps。Docker Swarm,Amazon ECS或Red Hat的OpenShift等集羣工具將使DevOps可以託管Docker容器。他們能夠用這些系統在需求高時擴大規模,在需求低時縮小規模。以經濟有效的方式利用資源又反過來解決了咱們的第一個問題。 架構

使用Docker和微服務架構解決可擴展性和解耦代碼微服務

       讓咱們用咱們的示例項目來講明這個容器化的基礎設施。此代碼包含Web前端和註冊後端。您可能會注意到這些被分紅兩個單獨的代碼倉庫。不要緊,在面向服務的體系結構中,這些服務相互瞭解的越少越好。

      在下圖中,咱們能夠看到生活在Amazon ECS羣集內的Web和註冊容器。用戶註冊請求將到達Web前端,而後能夠向任何註冊服務詢問進行響應。

502.png

       讓咱們開始克隆示例項目。 

       確保安裝了Docker和Gradle,以便咱們能夠構建項目和圖像。

屏幕快照 2018-10-16 上午11.52.00.png

       您能夠運行如下命令來查看Docker引擎中的圖像。

屏幕快照 2018-10-16 上午11.52.10.png

       請注意,咱們如今有兩個圖像加上它們構建的基本圖像。只是爲了好玩,讓咱們啓動網絡應用程序並訪問。獲取Docker Web映像並將其做爲在本地虛擬機上運行的容器啓動。

屏幕快照 2018-10-16 上午11.52.26.png

       咱們讓託管機器訪問8080端口上的容器。使用如下命令,咱們如今能夠看到它正在運行。

屏幕快照 2018-10-16 上午11.52.43.png

使用亞馬遜的彈性容器服務

       要真正瞭解這些Docker圖像的優點,咱們須要一個可擴展的基礎架構來運行它們。出於本演示的目的,Amazon ECS會作得很好。要將圖像輸出到Amazon雲,您須要安裝AWS命令行界面。

       亞馬遜提供了一個很棒的嚮導來幫助簡化這個過程。在其中,您將執行如下操做

 

建立一個Docker存儲庫來託管您的圖像

將圖像上傳到雲端(見下文)

建立運行映像的EC2實例集羣

將您的圖像分組到服務Service中

        要將Docker圖像推送到雲端,您須要先登陸。

屏幕快照 2018-10-16 上午11.52.53.png

       上面的命令生成一個「docker login」,它將Docker主機指向遠程倉庫。這將授予對每一個AWS帳戶附帶的默認AWS註冊表的訪問權限。

屏幕快照 2018-10-16 上午11.53.02.png

       請注意,上述註冊表能夠包含許多存儲庫。存儲庫包含圖像的版本。對於此項目,您將須要兩個存儲庫。一個用於咱們的Web圖像,一個用於註冊圖像。

       爲了將圖像發送到遠程倉庫,須要對其進行適當標記。像這樣使用您的AWS倉庫的URL。

屏幕快照 2018-10-16 上午11.53.25.png

       如今讓咱們將它們推送到AWS。

屏幕快照 2018-10-16 上午11.53.44.png

使用Docker容器擴展ECS

       在上一節中,您使用嚮導建立了一個EC2實例羣集。咱們建立了兩個代碼倉庫來保存咱們的圖像並將其上傳到那裏。咱們來看一下。

503.png

      您還能夠看到個人羣集在其已完成狀態下有3臺服務器,其上運行4個Docker鏡像(參見上圖)。

504.png

      上面還列出了咱們從羣集配置的服務。服務容許您對Docker容器進行分組並指定選項,例如您想要多少個選項,以及如何平衡它們之間的流量。

505.png

      若是您正確配置了Load Balancer,則能夠在瀏覽器中訪問它。請求將分發到羣集中的活動容器數。

506.png

      這是咱們創建的註冊服務的手動請求。回想一下,該服務在端口8081上運行,以避免與端口8080上的註冊服務衝突。Load Balancer負責將全部這些隱藏起來。咱們能夠經過端口80從註冊服務得到結果。

507.png

Docker的將來

      這個快速概述僅涉及Docker和微服務架構如何用於爲您的團隊和產品進行重大改進。如下是採用此架構時能夠看到的一些明顯的好處。

1. 下降成本

2. 加快發展

3. 更快,更一致的部署

4. 鬆散耦合的代碼和團隊

5. 更易於維護和擴展

6. 更可靠的基礎設施 

      若是您但願在更大的環境中利用Docker,那麼咱們建議您考慮使用Spring Netflix和OpenShift等解決方案。這些解決方案適用於更大的Docker生態系統,可使部署和開發更加輕鬆。

    本文轉載自數據星河平臺:https://www.bdgstore.com.cn/portal/article/index/id/179.html

相關文章
相關標籤/搜索