如何在Docker容器内挂载EFS?

5

我正在尝试将EFS挂载到在EC2服务器上运行的Docker容器中。在EC2中进行EFS挂载是可以正常工作的,方法如下:

sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport <efs-address>:/ efs

但是当尝试在Docker容器中运行时,会出现错误“mount.nfs4: Operation not permitted”。请告诉我如何解决这个问题。


1
可能是在Docker容器内挂载nfs共享的重复问题。 - David Maze
1
创建一个 docker 卷并使用它不是一个选项吗?例如:docker volume create --driver local --opt type=nfs --opt o=addr=10.0.0.50,rw,nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 --opt device=:/ efs,然后使用卷 docker run --rm -it -v efs:/mnt ubuntu:18.04 - masseyb
2个回答

17

您可以使用 EFS 创建一个 docker volume

docker volume create \
    --driver local \
    --opt type=nfs \
    --opt o=addr=10.0.0.50,rw,nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 \
    --opt device=:/ efs 

然后挂载卷 docker run --rm -it -v efs:/mnt ubuntu:18.04


这符合我的要求,但有一个问题。这需要两个步骤:1.创建Docker卷,2.运行Docker镜像。是否可能将其合并为单个步骤?我能否通过更改Dockerfile来完成此工作? - padmanabh pande
1
@padmanabhpande 本身无法对 Dockerfile 进行任何操作,但如果使用 docker-compose,则可以在其中定义 docker volume,并在启动服务时创建 docker volume(如果尚不存在)。 - masseyb

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接