2017-02-16 2 views
7

je docker-compose.yml fichierdocker monter nfs avec local_lock = all

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

mon conteneur ont monté le volume avec des options:

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) 

avec local_lock = aucun et je peux » t changer cette option à local_lock = all J'ai essayé:

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

et

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

, mais rien ne change

+0

S'il s'agit d'une syntaxe, ce serait la première avec 'o: addr = 192.168.100.1, rw, local_lock = all'. Avez-vous supprimé et recréé le volume avec ce paramètre configuré? – BMitch

+0

@BMitch Je me rends compte que ce problème peut provenir de Linux/Ubuntu/NFS et non de Docker lui-même. Si j'essaye de monter manuellement mon volume dans Ubuntu avec 'mount -o nfsvers = 4, nolock ...', je vois toujours 'local_lock = none' dans le' mount'output. Est-ce un problème d'Ubuntu? Ou NFS 4? – alexpirine

+0

@alexpirine docker va simplement passer cette option au pilote OS et NFS, donc c'est une forte possibilité. – BMitch

Répondre

0

Une solution qui ne répond pas à la question est de créer NFS se monte directement sur l'hôte, puis exporter le dossier monté sur un volume de docker. De cette façon, les verrous NFS ne sont plus requis sur les conteneurs Docker.

Ce n'est pas une solution idéale pour Docker Swarm, car elle nécessite le maintien des montages NFS sur chaque nœud de l'essaim.

+0

clusterssh pour un nombre fixe de machines virtuelles pourrait aider ou installer vms – herm

0

La syntaxe que vous voulez est la première option:

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

qui est juste un passage à travers le système d'exploitation. La raison pour laquelle vous ne voyez probablement aucune différence avec ce montage de volume est que local_lock est répertorié comme une option uniquement NFS 2 ou NFS 3, donc si vous utilisez NFS 4, cette option est probablement ignorée.

+0

Hmm, c'est la réponse correcte, mais ne résout pas le problème, malheureusement ... Une façon d'utiliser les verrous locaux dans NFS 4? – alexpirine

+0

Je ne crois pas qu'il s'agisse d'une fonctionnalité prise en charge dans nfs4. Si vous avez besoin de cette option, vous devrez rétrograder. – BMitch