本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
最佳做法-永久性儲存
您可以使用 Amazon ECS 來大規模執行可設定狀態的容器化應用程式,方法是使用AWS儲存服務,例如 Amazon EFS BS、Amazon EBS 或適用於 Windows 檔案伺服器的 Amazon FSX,可為本質上的暫時容器提供資料持久性。術語資料持久性意味著數據本身超過了創建它的過程。資料持久性AWS是透過結合運算和儲存服務來達成的。與 Amazon EC2 類似,您也可以使用 Amazon ECS 將容器化應用程式的生命週期與使用和產生的資料分離出來。使用AWS儲存服務,即使任務終止後,Amazon ECS 任務也可以保留資料。
默認情況下,容器不會保存它們產生的數據。當容器被終止時,它寫入其可寫入層的數據將與容器一起銷毀。這使得容器適用於不需要在本地存儲數據的無狀態應用程序。需要數據持久性的容器化應用程序需要一個存儲後端,當應用程序的容器終止時,不會被銷毀。

容器影像是以一系列圖層建立的。每個圖層都代表 Docker 檔案中建立影像的指令。除了容器之外,每個圖層都是唯讀的。也就是說,當您建立容器時,會在底層層上加入可寫入的層。容器建立、刪除或修改的任何檔案都會寫入可寫入層。當容器終止時,也會同時刪除可寫圖層。使用相同影像的新容器具有自己的可寫入層。此圖層不包含任何變更。因此,容器的數據必須始終存儲在容器可寫層之外。
使用 Amazon ECS,您可以使用磁碟區執行可設定狀態的容器。Amazon ECS 本機與 Amazon EFS 整合,並使用與 Amazon EBS 整合的磁碟區。對於 Windows 容器,亞馬遜 ECS 與適用於 Windows 文件服務器的亞馬遜 FSX 整合以提供持久性存儲。
為您的容器選擇正確的儲存類型
在 Amazon ECS 叢集中執行的應用程式可以使用各種AWS儲存區服務和第三方產品,以便為可設定狀態的工作負載提供永續性 您應該根據應用程式的架構和儲存需求,為您的容器化應用程式選擇儲存後端。如需有關 的詳細資訊AWS儲存體服務,請參閱雲端儲存AWS
對於包含 Linux 執行個體或與 Fargate 特搭配使用的 Amazon ECS 叢集,Amazon ECS 會與 Amazon EFS 和 Amazon EBS 整合以提供容器儲存體。Amazon EFS 和 Amazon EBS 之間最明顯的區別在於,您可以同時在數千個 Amazon ECS 任務上掛載 Amazon EFS 檔案系統。相反,Amazon EBS 磁碟區不支援並行存取。基於此,Amazon EFS 是水平擴展的容器化應用程式的建議儲存選項。這是因為它支持並發。Amazon EFS 會將您的資料備援存放在多個可用區域,並提供 Amazon ECS 任務的低延遲存取,無論可用區域為何。亞馬遜 EFS 支援在 Amazon EC2 和 Fargate 執行的任務。
假設您有一個應用程序,例如需要亞毫秒延遲的事務數據庫,並且在水平縮放時不需要共享文件系統。對於這類應用程式,我們建議使用 Amazon EBS 磁碟區進行永久性儲存。目前,Amazon ECS 僅支援在 Amazon EC2 上託管的任務的 Amazon EBS 磁碟區。亞馬遜 EBS 磁碟區的 Support 不適用於 Fargate 的任務。在將 Amazon EBS 磁碟區搭配 Amazon ECS 任務使用之前,您必須先將 Amazon EBS 磁碟區連接到容器執行個體,並從任務的生命週期分開管理磁碟區。
對於包含 Windows 執行個體的叢集,適用於 Windows 檔案伺服器的 Amazon FSX 會為容器提供永久性儲存體。Amazon FSx for Windows File Server 檔案系統支援異地同步備份部署。透過這些部署,您可以與跨多個可用區域執行的 Amazon ECS 任務共用檔案系統。
您也可以將 Amazon EC2 執行個體儲存用於使用繫結掛載或 Docker 磁碟區託管在 Amazon EC2 上的 Amazon ECS 任務的資料持續性。使用繫結掛載或 Docker 磁碟區時,容器會將資料儲存在容器執行個體檔案系統上。使用主機檔案系統進行容器儲存的其中一項限制是資料一次只能在單一容器執行個體上使用。這表示容器只能在資料所在的主機上執行。因此,只有在應用程式層級處理資料複寫的案例中,才建議使用主機儲存體。