天天看點

如何在雲端運作 Docker 容器:5 大 CaaS 解決方案

作者:科技狠活與軟體技術

關注留言點贊,帶你了解最流行的軟體開發知識與最新科技行業趨勢。

在本文中,讀者将了解幫助工程師在雲端運作 Docker 容器的前 5 大 CaaS 解決方案的優缺點。

在過去幾年中,越來越多的組織和開發人員加入了 Docker 之旅。容器化簡化了軟體開發過程,因為它消除了依賴性處理和使用特定硬體。盡管如此,使用容器的最大優勢在于它們提供的可移植性。但是,如何在雲上運作容器可能會讓人非常困惑。您當然可以使用基礎架構即服務 (IaaS) 将這些容器部署到您的雲提供商的伺服器上。但是,這種方法隻會讓您回到我們之前提到的問題,即當有更好的方法時,您必須維護這些伺服器。

目錄

  • 如何在雲端運作 Docker 容器
    • 使用容器系統資料庫
    • 使用容器即服務
  • 為什麼要使用 CaaS?
  • 什麼是最好的 CaaS 解決方案?
    • 亞馬遜雲伺服器
    • AWS lambda
    • AWS app runner
    • Azure 容器執行個體
    • Google Cloud Run
  • 結論

如何在雲端運作 Docker 容器

使用容器系統資料庫

如果您的容器在本地運作但想知道如何在雲上運作它,您可能正在閱讀這篇文章。在這種情況下,将其帶到雲中的下一步是選擇一個容器系統資料庫,該系統資料庫将充當存儲容器的集中位置。本質上,您需要将您的容器推送到這個系統資料庫,無論是公共的還是私有的,這樣您的圖像就可以從那裡分發。

使用容器即服務

容器即服務 (CaaS) 是一種概念,允許公司使用任何給定的選擇提供商直接在雲上運作他們的容器。有了 CaaS,運作容器所需的基礎設施,如 Docker Swarm、Kubernetes、OpenStack 等編排工具,以及叢集管理軟體,對使用者來說是不存在的。作為旁注,CaaS 加入了已經建立的雲服務模型,例如基礎設施即服務 (IaaS)、平台即服務 (PaaS) 和軟體即服務 (SaaS)。

為什麼要使用 CaaS?

使用容器即服務的一些優點是:

  • 降低成本:它消除了維護安全基礎架構以運作容器所花費的時間、精力和金錢。
  • 靈活性:您可以輕松地從一個雲遷移到另一個雲,甚至傳回到您的本地基礎設施,進而使您擺脫供應商鎖定。
  • 速度:由于底層基礎設施從中抽象出來,您可以更快地部署容器。

總的來說,CaaS 不僅會簡化軟體應用程式的運作過程,還會提高其整體安全性,因為大多數 CaaS 解決方案都提供漏洞掃描。此外,您不必擔心管理将運作容器的硬體。

什麼是最好的 CaaS 解決方案?

選擇 CaaS 解決方案時,一些關鍵考慮因素包括:

  • 能不能運作多容器應用?
  • 有哪些網絡和存儲功能可用?
  • 它支援哪種檔案格式?
  • 存儲是如何實作的?
  • 它使用哪種計費模式?

亞馬遜彈性容器服務(亞馬遜 ECS)

Amazon ECS 是 AWS 的可擴充容器編排平台,旨在通過使用任務定義在叢集環境中運作、停止和管理容器。本質上,任務定義是您定義的地方:

  • 要使用的容器。
  • 要運作多少個容器。
  • 你的容器是如何連結的。
  • 您的容器使用什麼資源。

注意: AWS ECS 還支援挂載 EFS 卷。

考慮到這一點,您可以通過兩種方式使用 ECS:

  1. 通過使用 EC2 執行個體。
  2. 通過使用 Fargate。
如何在雲端運作 Docker 容器:5 大 CaaS 解決方案

AWS EC2 的 ECS

在這種情況下,容器将部署到為叢集建立的 EC2 執行個體 (VM)。優點包括:

  • 完全控制所用 EC2 執行個體的類型。您的容器用于機器學習并且是面向 GPU 的,這意味着您可以選擇在針對此用途優化的 EC2 執行個體上運作。
  • 通過使用 Spot 執行個體降低您的成本,這可以将您的成本降低多達 90%。

另一方面,唯一的缺點是:

  • 您負責修補、管理網絡安全以及與這些執行個體相關的可擴充性。

定價:

在成本方面,您需要為在 ECS 叢集和 VPC 網絡中運作的 EC2 執行個體付費。

AWS Fargate 的 ECS

AWS Fargate 于 2017 年推出,使用此模型,您不必擔心管理 EC2 執行個體。AWS Fargate 通過為您預配置叢集來直接管理運作容器所需的底層伺服器。您隻需要向其中添加您的工作量。優點包括:

  • 無需管理基礎設施。
  • AWS 處理容器應用程式的可用性和可擴充性。
  • Fargate Spot,基于與 Spot 執行個體類似的原理,AWS 提到成本降低高達 70%。

相比之下,缺點是:

  • 目前僅支援一種網絡模式 (awsvpc),這可能會在您可能嘗試實作的某些特定場景中限制您使用網絡層。

Datadog最近的一份報告提到,到 2021 年,32% 的 AWS 容器環境都在使用 AWS Fargate。這種趨勢證明了公司正在逐漸轉向無伺服器環境。

定價:

Fargate 的定價基于“現收現付”模式。沒有前期成本,您隻需為消耗的計算和記憶體資源付費。以下是美國西部(俄勒岡)地區的定價示例:

  • 每個 vCPU 每小時 0.04048 USD。
  • 每小時每 GB 0.004445 美元。

下表将幫助您更好地了解用于 ECS/Fargate 和 Kubernetes 的術語:

如何在雲端運作 Docker 容器:5 大 CaaS 解決方案

AWS lambda

AWS 提供的無伺服器服務,您可以通過該服務攜帶代碼,無論是 Java、Go、C#、Python、Powershell、Node.js 還是 Ruby,Amazon 會将其運作到符合其語言 Lambda 接口的可調用函數中。Lambda 函數主要通過将它們連接配接到 AWS API Gateway 來調用,AWS API Gateway 将函數公開為 REST API 調用。您可能想知道為什麼我們此時甚至提到 AWS Lambda,因為它與 Docker 或容器映像沒有任何聯系。據AWS稱,2020 年 12 月,AWS Lambda 開始支援運作最大 10GB 的容器鏡像。使用 Lambda 在雲上運作 Docker 容器可為您提供:

  • 可擴充性:Lambda 将自動建立函數的新執行個體以滿足需求,因為它每分鐘最多可擴充 500 個新執行個體。

但是,您可能不得不應對:

  • 可移植性降低:由于 Lambda 是 AWS 專有的無伺服器技術,您将需要顯着調整您的功能以轉移到另一個雲提供商。
  • 可擴充性慢:當我們提到 Lambda 如何啟動新執行個體時,我們并不是在談論它的速度。函數的冷啟動需要時間,并且會對 Java 和 .NET 應用程式産生嚴重影響。
  • 無法運作長時間運作的任務:Lambda 函數最多隻能運作 15 分鐘。

定價:

您将按功能請求的數量和持續時間(執行功能所花費的時間)收費。定價也會根據您配置設定給函數的記憶體量而有所不同。盡管如此,Lambda 提供了一個免費套餐,即使您使用年度 AWS 免費套餐期限也可以使用,它每月提供 400,000 GB 秒的計算時間。

AWS App Runner

AWS App Runner 于 2021 年 5 月推出,有助于将 Web 應用程式帶到雲端,而無需擔心擴充或與之相關的基礎設施。從本質上講,它隻是運作帶有 Fargate 的 Amazon ECS 來執行您的容器,但您無需設定或配置與 Fargate 相關的任何内容即可開始。它可以在構模組化式下運作,從您的 GitHub 存儲庫中提取代碼,并在您可能推送到主分支的任何送出中建構應用程式。或者,它可以在容器模式下運作,您将在其中連接配接容器系統資料庫(僅支援 AWS ECR)并指向您的圖像。如果您想了解 AWS 對 App Runner 的計劃,他們會通過詳細的路線圖概述您需要了解的一切。

在雲端運作 Docker 容器時,AWS App Runner 的核心優勢在于:

  • 它易于配置,并提供了一種讓 Web 應用程式在雲中運作的簡單方法。

另一方面,缺點包括:

  • 構模組化式僅支援 Python 和 Node.js 運作時。
  • 不能縮容到 0,你至少需要為一個執行個體付費。
  • 構模組化式沒有與 AWS CodeCommit 或其他源代碼控制管理內建,這意味着您将被迫使用 GitHub。
  • 應用程式無法與私有 VPC 通信:此處有更多詳細資訊。

定價:

您需要為使用的内容付費。例如,一個最小執行個體(1vCPU,2GB)的費用為每小時 0.078 美元或每月約 56.00 美元,如果它一直在運作,則自動建構和部署需要額外支付一些費用:

  • 每個 vCPU 每小時 0.064 USD。
  • 每小時每 GB 0.007 美元。
  • 自動部署:每個應用程式每月 1 美元。
  • 建構費用:0.005 美元/建構分鐘。

詳細的定價資訊可在他們的網站上找到。

Azure 容器執行個體 (ACI)

自 Azure 容器執行個體于 2017 年 7 月釋出以來,微軟是 CaaS 市場的後來者。它提供:

  • 通過将 Azure 檔案共享裝載到容器來支援持久存儲。
  • Co-scheduled groups,Azure 支援共享主機、本地網絡或存儲的多容器組的排程。
  • 容器位于您的虛拟網絡中,可以與該網絡中的其他資源進行通信。
  • 完全控制運作容器的執行個體。添加 GPU 計算能力對于 ACI 來說不是問題。

與之相關的唯一缺點是:

  • 僅支援從系統資料庫調用 Docker 容器。

定價:

按使用的 vCPU、記憶體、GPU 和作業系統的小時數計費。使用需要 GPU 或 Windows 的容器會更昂貴。

  • 每個 vCPU 每小時 0.04660 USD。
  • 每小時每 GB 0.0051 美元。

Google Cloud Run

GCP 的 CaaS 解決方案 Google Cloud Run 于 2019 年 11 月推出。

與上面列出的在雲中運作 Docker 容器的其他選項類似,此服務建構在基于 Kubernetes 的 Knative 平台上。與 AWS App Runner 類似,您可以選擇指向包含您的應用程式代碼的容器系統資料庫或存儲庫。

好處:

  • 使用來自 Google Secret Manager 的機密。
  • 從源代碼部署支援 Go、Python、Java、Node.js、Ruby 等。
  • 支援修訂之間的流量拆分。

壞處:

  • 與 Cloud Run 沒有直接關系,但唯一的缺點是與整個 GCP 相關,例如,與 Azure 或 AWS 相比,區域數量有限。

定價:

任何人都可以使用 GCP 向新客戶提供的 300 美元贈金免費試用 Cloud Run。之後,您将在超過免費套餐後向您收費。

Google Cloud Run每月免費配額如下:

  • CPU:前 180,000 vCPU 秒。
  • 記憶體:前 360,000 GB 秒。
  • 請求:前 200 萬個請求。
  • 網絡:前 1 GB 出口流量(平台範圍)。

一旦繞過了這些限制;但是,您需要為使用付費。Google Cloud Run 付費層的費用為:

  • CPU: 每 vCPU 每分鐘 0.00144 USD。
  • 記憶體: 每 GB 每分鐘 0.00015 USD。
  • 請求: 每 100 萬個請求 0.40 USD。
  • 網絡: 傳遞每 GB 0.085 美元。

結論

雲提供商一直在創新,通過不斷推出新服務來滿足客戶的需求。一個小問題是,更多服務和功能的傳遞會讓開發人員群組織更加困惑。盡管 AWS、Azure 和谷歌雲産品可能略有不同,但很明顯它們都有一個共同的目标。他們都在尋求簡化在雲編排上運作 Docker 容器,同時保持支援廣泛的開發人員用例所需的靈活性。

繼續閱讀