AWS Fargate - 卷

AWS Fargate - Volumes

我的 docker 撰写文件有问题: 这是我的 docker 撰写文件:

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,

我也希望我的音量是 "read only"。

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

有人可以帮助我吗?

谢谢

Does anyone know which variable name I need to use on my docker composer file?

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

Fargate 的大前提是它混淆了任务中的底层主机,因此作为最终用户,您与主机交互的选项很少 - 您无法通过 SSH 访问它,也无法触摸它文件系统。在绑定挂载的情况下,你不能指定 host 因为你在部署时不知道主机的名称或位置,你也不能进一步指定 sourcePath 因为你对主机上的文件系统一无所知。

特别是在尝试挂载 docker.sock 的实例中,这将使您可以访问主机 上的 每个容器 运行,这可能属于给其他 accounts/aws 用户。那将是非常糟糕的。

我可以将绑定安装与 Fargate 一起使用吗?

是的。尽管它的用处可能有限,因为您将无法访问底层主机的文件系统以检索从容器传递到主机的任何文件。

If the sourcePath value does not exist on the host container instance, the Docker daemon creates it.

所以绑定安装的答案本质上是不指定 host,Docker 守护程序只会为您创建一个路径。这有帮助吗?可能不是你的情况。