2016-10-07 19 views
16

Nfs paylaşımını docker konteynerinin içine centos base image ile nasıl monte edeceğini bilen var mı? ,
nfs paylaşımlarını docker kabının içine yerleştirme

mount.nfs: rpc.statd is not running but is required for remote locking.
mount.nfs: Either use '-o nolock' to keep locks local, or start statd.
mount.nfs: an incorrect mount option was specified

Ben -o nolock seçeneğiyle bunu kullanmayı deneyin: Bu komut denedim:

mount server:/dir /mount/point 

ve sonraki hata var Hata:

mount.nfs: Operation not permitted 

cevap

21

mount'u kullanmak için, kapsayıcıyı oluştururken Docker tarafından bırakılan CAP_SYS_ADMIN özelliğine ihtiyacınız vardır.

Bunun birkaç çözüm vardır:

    --privileged=true bayrağıyla kabı başlayın
  1. . Bu, Docker'ın herhangi bir özelliği düşürmemesine neden olur, bu da bir NFS paylaşımını kapsayıcıdan yüklemenize izin vermelidir. Bu bir güvenlik sorunu olabilir; bunu güvenilmeyen kaplarda yapmayın.
  2. Dağı ana bilgisayarda NFS paylaşmak ve bir ana birim olarak kabın içine geçmesi:

    [email protected] > mount server:/dir /path/to/mount/point 
    [email protected] > docker run -v /path/to/mount/point:/path/to/mount/point 
    
  3. (Netshare eklenti gibi) Docker hacim eklentiyi kullanın doğrudan kapsayıcı olarak NFS paylaşımına bağlamaya hacmi: aslında geçmek için "docker run -v" komutunu kullanmaya çalıştı varsa kabul edilen yanıt listelenen ikinci seçenek için

    [email protected] > docker run \ 
        --volume-driver=nfs \ 
        -v server/dir:/path/to/mount/point \ 
        centos 
    
+0

Seçenek 1 için: '--privileged = true' kullanılmadığında geçici çözüm nasıl kullanılır? – Zelphir

+0

Yöntem 2. işe yaramıyor. Yerel sisteme bağlı NFS'im var ve tüm dosyaları görebiliyorum. Ancak, mount klasörünü kapsayıcıya bir birim olarak aktardığımda, yalnızca boş bir klasör alırım. Jing Qiu'nun önerdiği gibi, izinsiz olarak izinleri değiştirmeye çalışıyorum. – cage

5

, emin değilim NFS, ana makine üzerinde bir birim olarak docker konteynerini paylaşır.

nfs-server:/path_to_mount on /path_dest type nfs 

ve sonra:

docker run -it -v /path_dest:/path_in_docker docker_name bash 

Ama liman işçisi cin hep hata aşağıda raporları:

docker: Error response from daemon: stat /path_dest: permission denied. 
Geçenlerde aşağıda ana bilgisayarda nfs payı için bilgi, bu yüzden yapmaya çalıştık

Birçok aramadan sonra, hatanın aslında "root" olarak çalışan docker daemon'dan geldiğini buldum. Docker, birime monte edilecek bir kapsayıcıyı çalıştırdığında, docker daemonunun onu yerleştirmesini ister. Sorun şu ki, NFS sunucusu "root"'u farklı şekilde ele alacaktır. Varsayılan olarak, NFS sunucusu hata mesajı neden "root"için "kimse" eşler: reference

1

Ben liman işçisi kap üzerinde nfs monte @helmbert için teşekkürler.

  1. Bir docker konteynerini --privileged=true bayrağıyla çalıştırın.

    $ docker run -it --privileged=true centos:7 bash 
    [[email protected] /]# yum install -y nfs-utils 
    
  2. nfs araç paketini yükleyin ve nfs'yi CentOS'a takın.

    [[email protected] /]# yum install -y nfs-utils 
    [[email protected] /]# mount -t nfs example.tw:/target/ /srv -o nolock 
    
  3. nfs sunucusunun montajını göster. bunu çalıştırdığınızda docker 17.06 itibaren

    [[email protected] /]# showmount example.tw 
    Hosts on example.tw: 
    10.10.10.1 
    10.10.10.2 
    
9

, sen

docker run --mount 'type=volume,src=VOL_NAME,volume-driver=local,dst=/LOCAL-MNT,volume-opt=type=nfs,volume-opt=device=:/NFS-SHARE,"volume-opt=o=addr=NFS-SERVER,vers=4,hard,timeo=600,rsize=1048576,wsize=1048576,retrans=2"' -d -it --name mycontainer ubuntu

https://github.com/moby/moby/issues/28809

dan ipucu var ekstra yetenekleri gerek kalmadan, doğrudan kaba NFS paylaşım oluşturabilirsiniz
+0

Bu, Docker 17.06 ve ötesindeki # 1 yanıt olmalıdır. Bu yetenek için uzun zamandır bekliyordum! –

+0

Bir yazım hatası düzeltmek ve insanların normal olarak özelleştirmek istediği parametreleri vurgulamak için cevabı düzenledim (kapsayıcıda yerel bağlama noktası, NFS sunucusu ana makine adı/IP ve uzak NFS paylaşım yolu) – ThiagoAlves

İlgili konular