我有一个ECS实例,我的码头容器正在运行。我想在ECS上运行的码头容器上安装EFS。那怎么可能呢?
我能够在ECS实例上挂载EFS,但不能安装在运行在ECS上的docker容器上。
EFS具有直接连接功能&可以在2049端口从码头进行远程连接。
-t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 X.X:/ /efs
错误是:- mount.nfs4:不允许的操作
发布于 2018-02-26 11:15:58
它应该是任务定义的一部分,您需要在任务定义中添加卷,然后在源卷选项中引用它,下面是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"
}
}
]发布于 2018-10-05 18:55:58
最新情况;2020年1月17日-预览ECS/EFS支持
在2020年1月17日AWS 宣布了ECS对EFS的支持预览。需要注意的是,这是当前的预览版本;请参阅有关配置文档中这意味着什么的信息。
与其定义卷及其所有连接参数,不如简单地定义新的EFSVolumeConfiguration对象。
"EFSVolumeConfiguration": {
"fileSystemId": "fs-xxxxxx",
"rootDirectory": "/mnt/volume/path"
}原始答案
到2018年8月,有了码头卷支持,您现在可以使用将NFS共享直接装入ECS容器中。了。
目前可用的文档并不详细说明如何通过docker卷与ECS一起使用EFS,但这是可能的。
配置停靠器卷
首先,在任务配置中包括一个类似于以下内容的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"
}
}
}
]确保您在addr选项中更新了o参数,以匹配您的o文件系统的DNS名称。
然后,将此卷包含在容器定义中的挂载中。有关语法的更多信息,请参见码头容积。
"containerDefinitions": [
{
"mountPoints": [
{
"sourceVolume": "efs",
"containerPath": "/path/to/mount_volume",
"readOnly": false
}
]
}
]用于NFS连接的配置选项是AWS为安装EFS文件系统编写时推荐的配置选项。
发布于 2022-10-07 16:33:54
方法1:当您想要将EFS挂载到EC2实例并使所有容器使用它时,请使用。运行下面的命令将EFS挂载到EC2实例。
sudo mount -t efs fs-0ad7c287c2f7c27c2 /mnt/efs然后在任务定义中将其引用为sourcePath,以便容器可以使用efs挂载路径作为可写层。
"volumes": [
{
"name": "efs",
"host": {
"sourcePath": "/mnt/efs/mysql"
}
}
]方法2:当在ECS上启用自动缩放时,最好将EFS卷直接附加到ECS任务/容器。在任务定义中,如下图所示,容器将在产卵时直接挂载EFS。
"volumes": [
{
"name": "Tiger-Test",
"efsVolumeConfiguration": {
"fileSystemId": "fs-0ad7c287c2f7c27c2"
}
}
]https://stackoverflow.com/questions/48986933
复制相似问题