AWS Fargate-卷

时间:2018-12-13 10:38:06

标签: amazon-web-services docker amazon-ecs aws-fargate

我的docker compose文件有问题: 这是我的docker compose文件:

version: '3'

  services:
   nginx-proxy:
    image: xxxxx.dkr.ecr.xxxxx.amazonaws.com/xxxx:latest
    container_name: "nginx-proxy"
    restart: always
    ports:
     - "80:80"
     - "443:443"
    volumes:
     - /var/run/docker.sock:/tmp/docker.sock:ro
...

这是以下错误:

ClientException: host.sourcePath should not be set for volumes in Fargate

我的任务定义:

"mountPoints": [],
...
"volumes": [],
...
"readonlyRootFilesystem": false,

我也希望我的卷是“只读”的。

有人知道我需要在docker composer文件中使用哪个变量名吗?

有人可以帮我吗?

谢谢

1 个答案:

答案 0 :(得分:2)

  

有人知道我需要在docker composer文件中使用哪个变量名吗?

Fargate不允许您为绑定安装指定hostsourcePath。您可以check the docs for bind volumesthe overview for Fargate task storage docs来了解更多信息。

Fargate的主要前提是它混淆了任务中的底层主机,因此,作为最终用户,您与主机进行交互的选择很少-您无法使用它,也无法使用其文件系统。对于绑定安装,您无法指定host,因为您在部署时不知道主机的名称或位置,也无法进一步指定sourcePath,因为您对主机上的文件系统一无所知。

尤其是在尝试挂载docker.sock的情况下,这将使您可以访问主机上运行的每个容器,该容器可能属于其他帐户/ aws用户。到处都是糟糕的。

我可以在Fargate中使用绑定安装吗?

是的。尽管它的用途可能有限,因为您将无法访问基础主机的文件系统来检索从容器传递到主机的所有文件。

  

如果主机容器实例上不存在sourcePath值,则Docker守护程序将创建它。

因此,绑定挂载的答案实质上是不指定host,而Docker守护程序将仅为您创建路径。有帮助吗?可能不是您的情况。