docker AWS ECS Fargate 中的 cap-add

docker cap-add in AWS ECS Fargate

我在创建需要 docker“-cap-add”运行时间选项的 AWS ECS Fargate 类型任务时遇到问题。 AWS 文档关于此功能似乎不完整或含糊不清。

我的容器需要挂载 CIFS 文件系统,当我 运行 它在 Docker 中时,我使用命令:

docker run --cap-add SYS_ADMIN --cap-add DAC_READ_SEARCH -it alpine-cifs-python sh

它按预期工作。 AWS 文档似乎表明 "capabilities" 在各种文档中都受支持。例如以下内容:

AWS LinuxParameters

说:

If you are using tasks that use the Fargate launch type, capabilities is supported but the add parameter described below is not supported.

因此支持 "capabilities" 但不支持 "add"。目前尚不清楚这意味着什么,我已经在我的 CloudFormation YAML 中尝试了任意数量的组合,并且 none 没有抛出错误。

我一直在处理这样的事情:

  LinuxParameters:
    Capabilities: 
      Add:
        - SYS_ADMIN
        - DAC_READ_SEARCH
      #KernelCapabilities:
        #- 'SYS_ADMIN'
        #- 'DAC_READ_SEARCH'

但是当我尝试部署时这个 returns 错误:

Fargate does not allow adding Linux Capabilities. (Service: AmazonECS; Status Code: 400; Error Code: ClientException; Request ID: f7368ec6-38a6-4a0b-b8ec-7eb078ea5367)

如果我省略 "Add" 参数,我得到:

Value of property Capabilities must be an object

我没有成功找到任何有关如何在 Fargate ECS 任务中实施 "capabilities" 的示例。

我错过了什么?谢谢!

Fargate 今天不支持 --cap-add。仅支持可以删除的功能(如 --cap-drop)。

您可以通过json 添加任务定义。在 linuxParameters

下添加
"linuxParameters": {
        "capabilities": {
          "add": [
            "SYS_PTRACE"
          ],

Task definition parameters available.

How to add via json.