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

科技狠活與軟件技術 發佈 2024-05-07T09:41:45.309472+00:00

關注留言點讚,帶你了解最流行的軟體開發知識與最新科技行業趨勢。在本文中,讀者將了解幫助工程師在雲端運行 Docker 容器的前 5 大 CaaS 解決方案的優缺點。在過去幾年中,越來越多的組織和開發人員加入了 Docker 之旅。

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


在本文中,讀者將了解幫助工程師在雲端運行 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。

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 的術語:


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 容器,同時保持支持廣泛的開發人員用例所需的靈活性。

關鍵字: