gliderlabs / docker-alpine

Alpine Linux Docker image. Win at minimalism!
http://gliderlabs.viewdocs.io/docker-alpine
BSD 2-Clause "Simplified" License
5.7k stars 528 forks source link

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

Open ehudkaldor opened 7 years ago

ehudkaldor commented 7 years ago

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 <ehud.kaldor@gmail.com>

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 commented 7 years ago

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

ncopa commented 7 years ago

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 ...

timchenxiaoyu commented 4 years ago

exec mount nfs in docker container

failed: Connection refused

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