首页 > 解决方案 > 如何在 AWS 上运行的 docker 容器上挂载基于 FUSE 的文件系统?

问题描述

我需要在必须在 AWS ECS Fargate 上执行的 docker 容器上安装基于 FUSE 的文件系统(使用rclone )。

使用以下命令在本地运行容器没有问题:

docker run --rm --device /dev/fuse --cap-add SYS_ADMIN <IMAGE_NAME>

在 AWS ECS Fargate 上,docker 容器无法正常工作,因为在 AWS ECS 上定义任务时,我还没有找到如何设置标志--device--cap-add 。任何建议将不胜感激。

标签: amazon-web-servicesdockeramazon-ecsfuserclone

解决方案


不幸的是,我无法找到问题的直接解决方案。这是我当时使用的解决方法:

我切换到 EC2 类型的 ECS 任务是因为,您可以在官方文档中看到,标志--device--cap-add曾经并且仍然不可用于在 Fargate 上启动的任务。

这样,只有通过任务的 JSON 定义,我才能添加我需要的标志。下面是一个示例 json 定义,显示了如何添加这些属性:

{
  ... other properties
  "containerDefinitions": [
      ... other properties
      "linuxParameters": {
        "capabilities": {
          "add": [
            "SYS_ADMIN"
          ],
          "drop": null
        },
        ... other properties
        "devices": [
          {
            "containerPath": "/dev/fuse",
            "hostPath": "/dev/fuse",
            "permissions": null
          }
        ],
        ... other properties
      },
      ... other properties
  ],
  ... other properties
}

推荐阅读