我们可以在AWS ECS docker容器上挂载EFS吗?

mah*_*hod 5 amazon-ec2 amazon-web-services amazon-ecs amazon-efs

我有一个在其Docker容器上运行的ECS实例。我想在ECS上运行的Docker容器上挂载EFS。那有可能吗?

我可以在ECS实例上安装EFS,但不能在ECS上运行的Docker容器上安装EFS。

EFS具有直接连接功能,并能够从Docker在2049端口上进行telnet。

挂载-t nfs4 -o nfsvers = 4.1,rsize = 1048576,wsize = 1048576,hard,timeo = 600,retrans = 2 XXXX:/ / efs

错误是:-mount.nfs4:不允许操作

Luk*_*ite 12

自2018年8月起,有了docker卷支持,您现在可以将NFS共享直接安装到ECS容器中

当前可用的文档没有详细介绍如何通过Docker卷将EFS与ECS一起使用,但是可以的。

配置Docker卷

首先,volumes在任务配置中包括与以下内容类似的部分:

"volumes": [
   {
     "name": "efs",
     "host": null,
     "dockerVolumeConfiguration": {
       "autoprovision": null,
       "labels": null,
       "scope": "task",
       "driver": "local",
       "driverOpts": {
         "type": "nfs",
         "device": ":/",
         "o": "addr=<fs-id>.efs.us-east-1.amazonaws.com,nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport"
       }
     }
   }
]
Run Code Online (Sandbox Code Playgroud)

确保更新选项addr内的参数o以匹配EFS文件系统的DNS名称。

然后,将此卷包含在容器定义之一的安装架中。有关语法的更多信息,请参阅Docker Volumes

"containerDefinitions": [
    {
        "mountPoints": [
            {
                "sourceVolume": "efs",
                "containerPath": "/path/to/mount_volume",
                "readOnly": false
            }
        ]
    }
]
Run Code Online (Sandbox Code Playgroud)

用于NFS连接的配置选项是AWS在编写用于挂载EFS文件系统的建议的选项。


Sud*_*ran 4

它应该是您的任务定义的一部分,您需要在任务定义中添加卷,然后在源卷选项中引用它,这里是来自AWS的教程。

https://aws.amazon.com/blogs/compute/using-amazon-efs-to-persist-data-from-amazon-ecs-containers/

  "volumes": [
    {
      "name": "efs",
      "host": {
        "sourcePath": "/mnt/efs/mysql"
      }
    }
  ]
Run Code Online (Sandbox Code Playgroud)