docker-alpine icon indicating copy to clipboard operation
docker-alpine copied to clipboard

"connection refused" mounting with NFS3, when docker-alpine serves as NFS server

Open ehudkaldor opened this issue 7 years ago • 3 comments

I am setting up an NFS server container, on Raspberry-PI. everything seems ok, including showmount, but when i do a straightforward mount, i get connection refused. forcing NFSv3 (mount -o nfsvers=3) succeeds. any insight? Dockerfile:

FROM            hypriot/rpi-alpine-scratch

MAINTAINER      Ehud Kaldor <[email protected]>

RUN             apk update && \
                apk add nfs-utils && \
                rm -rf /var/cache/apk/*

EXPOSE          111/tcp 111/udp 2049/udp 34567 34568

#COPY            nfs.conf /etc/conf.d/nfs
COPY            entrypoint.sh /entrypoint.sh

CMD             ["/entrypoint.sh"]

entrypoint.sh:

#!/bin/sh -eu

/usr/sbin/exportfs -r
/sbin/rpcbind --
/usr/sbin/rpc.nfsd -p 34567 |:
/usr/sbin/rpc.mountd -p 34568 -F

/etc/exports:

/my_exports             *(ro,sync,no_subtree_check,insecure,fsid=0)
/my_exports/music       *(rw,sync,no_root_squash,no_subtree_check,insecure,nohide)

run command (/mnt/sda1 is mounted with a directory that contains, amongst others, /music):

docker run -it --rm -p 111:111/tcp -p 111:111/udp -p 2049:2049/tcp -p 34567:34567/tcp -p 34567:34567/udp -p 34568:34568/tcp -p 34568:34568/udp --privileged -v /mnt/sda1:/exports -v /root/docker/file-server/exports:/etc/exports --name file-server2 ehudkaldor/rpi-file-server:0.3

showmount:

> showmount -e AA.BB.CC.DD
Export list for AA.BB.CC.DD:
/my_exports/music *
/my_exports       *

mount (defaults to nfs4):

> sudo mount -v AA.BB.CC.DD:/my_exports/music /mnt              
mount.nfs: timeout set for Wed Sep 21 21:35:17 2016
mount.nfs: trying text-based options 'vers=4,addr=AA.BB.CC.DD,clientaddr=AA.BB.CC.EE'
mount.nfs: mount(2): Connection refused
mount.nfs: trying text-based options 'vers=4,addr=AA.BB.CC.DD,clientaddr=AA.BB.CC.EE'
mount.nfs: mount(2): Connection refused
mount.nfs: trying text-based options 'vers=4,addr=AA.BB.CC.DD,clientaddr=AA.BB.CC.EE'
mount.nfs: mount(2): Connection refused

forcing NFSv3:

> sudo mount -v -o nfsvers=3 -o nolock AA.BB.CC.DD:/my_exports /mnt
mount.nfs: timeout set for Wed Sep 21 21:37:00 2016
mount.nfs: trying text-based options 'nfsvers=3,nolock,addr=AA.BB.CC.DD'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying AA.BB.CC.DD prog 100003 vers 3 prot TCP port 34567
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying AA.BB.CC.DD prog 100005 vers 3 prot UDP port 34568

any insight?

ehudkaldor avatar Sep 22 '16 04:09 ehudkaldor

update: tried also with armhf/alpine as the base image, same result

ehudkaldor avatar Sep 22 '16 04:09 ehudkaldor

Does this work with ubuntu or debian? I remember having problems with mounting nfs inside containers before. Does dmesg give any hints?

One workaound might be to mount the nfs share on the host and then bind mount it with docker run --volume ...

ncopa avatar Sep 23 '16 10:09 ncopa

exec mount nfs in docker container

failed: Connection refused

dmesg: svc: failed to register lockdv1 RPC service (errno 111)

timchenxiaoyu avatar Apr 29 '20 02:04 timchenxiaoyu