2017-02-16 249 views
7

我有搬運工人,compose.yml文件泊塢窗安裝NFS與local_lock =所有

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 =無,我可以」 t將此選項更改爲local_lock =全部 我試過了:

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 

,但沒有任何變化

+0

如果是任何語法,它將是第一個使用'o:addr = 192.168.100.1,rw,local_lock = all'的。您是否使用配置的設置刪除並重新創建了音量? – BMitch

+0

@BMitch我意識到這個問題可能來自Linux/Ubuntu/NFS而不是Docker本身。如果我嘗試使用'mount -o nfsvers = 4,nolock ...'在Ubuntu中手動掛載我的卷,我仍然在'mount'output中看到'local_lock = none'。這是一個Ubuntu問題嗎?還是NFS 4? – alexpirine

+0

@alexpirine docker只是將這個選項傳遞給操作系統和NFS驅動程序,所以這是一個很好的可能性。 – BMitch

回答

0

一種解決方法,不回答這個問題是創建NFS直接安裝在主機上,然後安裝文件夾導出到一個碼頭工人的體積。這樣,Docker容器不再需要NFS鎖。

不是Docker Swarm的理想解決方案,因爲它需要在羣集的每個節點上維護NFS掛載。

+0

clusterssh對於固定數量的虛擬機可以幫助或者可以設置vms – herm

0

你想要的語法是第一個選項:

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

這僅僅是直通到OS。您可能沒有看到與卷裝有任何區別的原因是local_lock僅作爲NFS 2或NFS 3選項列出,所以如果您使用的是NFS 4,則該選項可能會被忽略。

+0

嗯,這是正確的答案,但不能解決問題,不幸的是......任何使用NFS 4本地鎖的方式? – alexpirine

+0

我不認爲這是nfs4中的一項支持功能。如果你需要這個選項,你需要降級。 – BMitch