我知道它不能准确回答这个问题,这比 Manish 的解决方案更基本,但实现 ECS 容器之间共享存储的原始方法是依赖Elastic File Systems。
通过在 Docker 实例的User Data或 Auto Scaling Group 启动配置中设置这样的脚本,EFS 可以挂载在每个 Docker 实例的 /mnt/efs 上,从而共享设置为 /mnt/efs/something 之类的卷。
为此,这个用户数据块完成了这项工作(我们将它与Amazon ECS 优化图像一起使用)。
Content-Type: multipart/mixed; boundary="==BOUNDARY=="
MIME-Version: 1.0
--==BOUNDARY==
MIME-Version: 1.0
Content-Type: text/text/x-shellscript; charset="us-ascii"
#!/bin/bash
yum install -y nfs-utils
mkdir "/mnt/efs"
echo "us-east-1a.fs-1234567.efs.us-east-1.amazonaws.com:/ /mnt/efs nfs4 nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 0 0" >> /etc/fstab
mount -a
/etc/init.d/docker restart
docker start ecs-agent
--==BOUNDARY==--
最后重新启动 Docker,否则它看不到已安装的卷(仅在创建实例时需要)。
当然,为此,必须将安全组设置为允许实例和 EFS 通过 NFS 网络端口 (2049) 进行通信。