搭配 Amazon ECS 使用綁定掛載 - Amazon Elastic Container Service

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

搭配 Amazon ECS 使用綁定掛載

透過綁定掛載,主機上的檔案或目錄,例如 Amazon EC2 執行個體,會掛載到容器中。在 Fargate 和 Amazon EC2 執行個體上託管的任務支援綁定掛載。綁定掛載會繫結至使用它們的容器生命週期。使用綁定掛載的所有容器停止之後,例如當任務停止時,資料就會被移除。對於託管在 Amazon EC2 執行個體上的任務,您可以透過在任務定義中指定 host和選用sourcePath值,將資料繫結至主機 Amazon EC2 執行個體的生命週期。如需詳細資訊,請參閱 Docker 文件中的繫結掛載。

以下是綁定掛載的常用案例。

  • 若要提供空白的資料磁碟區以便在一個或多個容器中掛載。

  • 若要在一個或多個容器中掛載主機資料磁碟區。

  • 若要與相同任務中的其他容器共用來源容器的資料磁碟區。

  • 若要將 Dockerfile 中的路徑及其內容公開給一個或多個容器。

使用綁定掛載時的考量

使用綁定掛載時,請考量下列事項。

  • 根據預設, AWS Fargate 使用平台版本 1.4.0或更新版本 (Linux) 1.0.0或更新版本 (Windows) 託管在 上的任務,會接收至少 20 GiB 的暫時性儲存以進行綁定掛載。您可以在任務定義中指定 ephemeralStorage 參數,將暫時性儲存的總量增加到最高 200 GiB。

  • 若要在執行任務時將 Dockerfile 中的檔案公開至資料磁碟區,Amazon ECS 資料平面會尋找 VOLUME 指令。如果在 VOLUME 指令中指定的絕對路徑與在任務定義中指定的 containerPath 相同,則 VOLUME 指令路徑中的資料會複製到資料磁碟區。在下列 Dockerfile 範例中,/var/log/exported 目錄中名為 examplefile 的檔案會寫入主機,然後掛載在容器內。

    FROM public.ecr.aws/amazonlinux/amazonlinux:latest RUN mkdir -p /var/log/exported RUN touch /var/log/exported/examplefile VOLUME ["/var/log/exported"]

    根據預設,磁碟區許可設定為 0755 和擁有者設定為 root。您可以在 Dockerfile 中自訂這些許可。在下列範例中,將目錄的擁有者設定為 node

    FROM public.ecr.aws/amazonlinux/amazonlinux:latest RUN yum install -y shadow-utils && yum clean all RUN useradd node RUN mkdir -p /var/log/exported && chown node:node /var/log/exported RUN touch /var/log/exported/examplefile USER node VOLUME ["/var/log/exported"]
  • 對於在 Amazon EC2 執行個體上託管的任務,當 hostsourcePath 值未指定時,Docker 常駐程式會為您管理綁定掛載。當沒有任何容器參考此綁定掛載時,Amazon ECS 容器代理程式任務清除服務最終會予以刪除。根據預設,這會在容器退出的 3 小時後發生。不過,您可以使用 ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION 代理程式變數設定此持續時間。如需詳細資訊,請參閱Amazon ECS 容器代理程式組態。如果您需要此資料的保留時間超過容器的生命週期,請為綁定掛載指定 sourcePath 值。