Amazon ECS 上 EC2 與外部執行個體的容器映像提取行為 - Amazon Elastic Container Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon ECS 上 EC2 與外部執行個體的容器映像提取行為

容器啟動所需的時間會因底層容器映像而異。例如,比起各自的精簡版本 (Debian-slim、Ubuntu-slim 與 Amazon-slim) 或較小型的基礎映像 (Alpine),較大型的映像 (Debian、Ubuntu 與 Amazon1/2 的完整版本) 可能需要更長的啟動時間,因為容器中執行的服務數量更多。

當 Amazon ECS 代理程式啟動任務時,會從其遠端登錄檔中提取 Docker 映像檔,然後快取一份本機副本。若為應用程式的每個版本使用新的映像標籤,此快取行為便不再必要。

ECS_IMAGE_PULL_BEHAVIOR 代理程式參數會決定映像提取行為。下列選項可供使用:

  • ECS_IMAGE_PULL_BEHAVIOR: default

    系統會從遠端提取映像。若提取失敗,則使用執行個體中的快取映像。

  • ECS_IMAGE_PULL_BEHAVIOR: always

    系統會從遠端提取映像。若提取失敗,則任務會失敗。

若要加速部署,請將 Amazon ECS 代理程式參數設定為下列任一值:

  • ECS_IMAGE_PULL_BEHAVIOR: once

    只有當相同容器執行個體上的前一個任務未提取過映像,或快取映像已由自動化映像清理程序移除時,才會從遠端提取該映像。否則,將使用執行個體上的快取映像。這可確保不會發生非必要的映像提取。

  • ECS_IMAGE_PULL_BEHAVIOR: prefer-cached

    如果沒有快取映像,將會從遠端提取映像。否則,將使用執行個體上的快取映像。為了確保快取映像不會被移除,容器會停用自動映像檔清理功能。

ECS_IMAGE_PULL_BEHAVIOR 參數設定為上述任一值可節省時間,因為 Amazon ECS 代理程式會直接使用已下載的現有映像。對於較大型的 Docker 映像檔,透過網路提取可能需要 10 至 20 秒的下載時間。