绑定挂载 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

绑定挂载

通过绑定挂载,可以将主机上的文件或目录(例如 Amazon EC2 实例)挂载到容器中。Fargate 和 Amazon EC2 实例上托管的任务都支持绑定挂载。绑定挂载与使用它们的容器的生命周期息息相关。停止使用绑定挂载的所有容器后(例如,停止任务时),数据将被删除。对于托管在 Amazon EC2 实例上的任务,通过在任务定义中指定可选sourcePath值,可以将数据host与主机 Amazon EC2 实例的生命周期相关联。有关更多信息,请参阅 Docker 文档中的使用绑定挂载

以下是绑定挂载的常见使用案例。

  • 提供空数据卷以挂载在一个或多个容器中。

  • 在一个或多个容器中挂载主机数据卷。

  • 与相同任务中的其他容器共享来自源容器的数据卷。

  • 将 Dockerfile 路径及其内容公开到一个或多个容器。

使用绑定挂载时的注意事项

使用绑定挂载时应考虑以下事项。

  • 对于 Amazon Fargate 使用平台版本1.4.0或更高版本 (Linux) 1.0.0 或更高版本 (Windows) 托管的任务,默认情况下,它们至少会获得 20 GiB 的临时存储空间用于绑定挂载。对于 Linux 任务,临时存储总量最大可以增加到 200 GiB,方法是在任务定义中指定 ephemeralStorage 参数。预设情况下,使用平台版本 1.0.0 或更高版本托管在 Fargate 上的 Amazon ECS Windows 任务获得至少 20GiB 的短暂存储。您可以增加临时存储总量,最多可达 200GiB,方法是在您的任务定义中指定 ephemeralStorage 参数。

  • 要在任务运行时将 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 容器代理任务清理服务最终会将其删除。默认情况下,这发生在容器退出三个小时后。但是,您可以使用 ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION 代理变量配置此持续时间。有关更多信息,请参阅Amazon ECS 容器代理配置。如果需要在容器的生命周期内保持此数据,请为绑定挂载指定一个 sourcePath 值。