Como montar o compartilhamento nfs a partir do container docker?

3

Eu posso ver os compartilhamentos do servidor:

[root@sandbox /]# showmount -e 192.168.0.111
Export list for 192.168.0.111:
/RAIDPOOL02/vers     *
/RAIDPOOL02/prod     *
/RAIDPOOL02/pipeline *

Quando tento montar, obtenho isto:

[root@sandbox /]# mkdir -p /192.168.0.111/pipeline
[root@sandbox /]# mount --verbose --options=nolock,exec,soft,intr,uid=500,rsize=65536,wsize=65536 192.168.0.111:/pipeline /192.168.0.111/pipeline

mount.nfs: timeout set for Wed May  4 08:16:49 2016
mount.nfs: trying text-based options 'nolock,soft,intr,uid=500,rsize=65536,wsize=65536,vers=4,addr=192.168.0.111,clientaddr=172.20.0.3'
mount.nfs: mount(2): Operation not permitted
mount.nfs: trying text-based options 'nolock,soft,intr,uid=500,rsize=65536,wsize=65536,addr=192.168.0.111'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 192.168.0.111 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 192.168.0.111 prog 100005 vers 3 prot UDP port 20048
mount.nfs: mount(2): Operation not permitted
mount.nfs: Operation not permitted

Estou expondo essas portas no meu Dockerfile:

EXPOSE 2049
EXPOSE 20048

E eu posso com sucesso nmap porta 2049 do servidor:

[root@sandbox /]# nmap -p 2049 192.168.0.111

Starting Nmap 6.40 ( http://nmap.org ) at 2016-05-04 08:21 UTC
Nmap scan report for 192.168.0.111
Host is up (0.00061s latency).
PORT     STATE SERVICE
2049/tcp open  nfs

Por que estou recebendo "Operação não permitida"?

    
por fredrik 04.05.2016 / 10:23

2 respostas

1

Você provavelmente precisará executar seus contêineres no modo privilegiado:

docker run --privileged=true

Se você puder atualizar o docker para o 17.06, poderá montar um compartilhamento NFS diretamente, sem recursos extras:

docker run --mount 'type=volume,src=src_name,volume-driver=local,dst=/mnt,volume-opt=type=nfs,volume-opt=device=:/nfs-share,"volume-opt=o=nfs-server,vers=4,hard,timeo=600,rsize=1048576,wsize=1048576,retrans=2"' -d -it --name mycontainer ubuntu

Entendi a dica da discussão aqui: link

    
por 28.08.2017 / 04:46
0

Eu vejo algumas partes faltando. O NFS também requer a porta 111.

Você excluiu sua instrução "docker run", por isso estou assumindo que você não tinha um switch -p para a porta 111. Se não estiver redirecionando portas, a seção port da instrução "docker run" deve procurar algo como "-p 111: 111 -p 2049: 2049 -p 20048: 20048" (sem as aspas).

    
por 09.09.2016 / 03:32