docker mount nfs with local_lock = all

时间:2017-02-16 05:30:50

标签: docker docker-compose mount nfs

我有docker-compose.yml文件

volumes:
  nfs:
      driver: local
      driver_opts:
        type: nfs
        o: addr=192.168.100.1,rw
        device: ":/mnt/storage"

我的容器已安装了带有选项的卷:

type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.100.1,mountvers=3,mountproto=tcp,local_lock=none,addr=192.168.100.1)

local_lock = none ,我无法将此选项更改为 local_lock = all 我试过了:

volumes:
  nfs:
      driver: local
      driver_opts:
        type: nfs
        o: addr=192.168.100.1,rw,local_lock=all
        device: ":/mnt/storage"

volumes:
  nfs:
      driver: local
      driver_opts:
        type: nfs
        o: addr=192.168.100.1,rw
        device: ":/mnt/storage"
        local_lock: all

但没有任何改变

2 个答案:

答案 0 :(得分:0)

无法解决问题的解决方法是直接在主机上创建NFS挂载,然后将挂载的文件夹导出到docker卷。这样,Docker容器就不再需要NFS锁。

不是Docker Swarm的理想解决方案,因为它需要在群的每个节点上维护NFS挂载。

答案 1 :(得分:0)

您想要的语法是第一个选项:

volumes:
  nfs:
      driver: local
      driver_opts:
        type: nfs
        o: addr=192.168.100.1,rw,local_lock=all
        device: ":/mnt/storage"

这只是传递给操作系统。您可能看不到该卷装入的任何差异的原因是local_lock被列为仅NFS 2或NFS 3选项,因此如果您使用NFS 4该选项可能会被忽略