I am working on an NFS container for dockers, but ran into the problem of installing exported directories (even on localhost).
Problem
exportfs: <path> does not support NFS export
Customization
My container uses script entry point in
- write directories (provided via command line arguments) to
/etc/exports, - causes
rpcbindand service nfs-kernel-server start, and - cancel
inotifywaitto continue work.
Dockerfile is nothing special. I install inotify-toolsand nfs-kernel-serverexpose port 2049 and copy through the script entry point.
I use docker-machineon a El Capitan Macbook.
I map the volumes from the host to the container to give the nfs server access to the directories I want to export.
script
modprobe nfs
modprobe nfsd
for x in ${@}; do
echo -e "$x\t*(rw,sync,no_subtree_check,crossmnt,fsid=root,no_root_squash)" >> /etc/exports
done
source /etc/default/nfs-kernel-server
source /etc/default/nfs-common
rpcbind
service nfs-kernel-server start
exec inotifywait --monitor /exports
, .
%> ls $HOME/mounts
a
%> ls $HOME/mounts/a
asdf
.
%> docker run --privileged --rm --name=nfs-server --volume=$HOME/mounts/a/:/exports/a docker-nfs-server /exports/a
Exporting directories for NFS kernel daemon...exportfs: /exports/a does not support NFS export
.
Starting NFS kernel daemon: nfsd mountd.
Setting up watches.
Watches established.
, .
%> docker exec -it nfs-server bash
[email protected]:/# ls /exports
a
[email protected]:/# ls /exports/a
asdf
[email protected]:/# showmount -a
All mount points on 6056a33f061e:
[email protected]:/# exportfs -a
exportfs: /exports/a does not support NFS export
[email protected]:/# mount
none on / type aufs (rw,relatime,si=3ca85db062268b32,dio,dirperm1)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev type tmpfs (rw,nosuid,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666)
mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /sys/fs/cgroup type tmpfs (rw,nosuid,nodev,noexec,relatime,mode=755)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu type cgroup (rw,nosuid,nodev,noexec,relatime,cpu)
cgroup on /sys/fs/cgroup/cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_prio)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
/dev/sda1 on /exports type ext4 (rw,relatime,data=ordered)
Users on /exports/a type vboxsf (rw,nodev,relatime)
/dev/sda1 on /etc/resolv.conf type ext4 (rw,relatime,data=ordered)
/dev/sda1 on /etc/hostname type ext4 (rw,relatime,data=ordered)
/dev/sda1 on /etc/hosts type ext4 (rw,relatime,data=ordered)
shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=65536k)
nfsd on /proc/fs/nfsd type nfsd (rw,relatime)
, . , , , :
$HOME/mounts/a OSX/exports/a - VM
NFS, , . .
Update
Parallels!
%> docker run --privileged --rm --name=nfs-server --volume=$HOME/mounts/a/:/exports/a docker-nfs-server /exports/a
%> docker exec -it nfs-server bash
[email protected]:/# mkdir --parents /imports/a
[email protected]:/# mount --types nfs --options nolock,proto=tcp,port=2049 localhost:/exports/a /imports/a
[email protected]:/# ls /imports
a
[email protected]:/# ls /imports/a
[email protected]:/# ls /exports
a
[email protected]:/# ls /exports/a
[email protected]:/# touch /exports/a/asdf
[email protected]:/# ls /exports/a
asdf
[email protected]:/# ls /imports/a/
asdf
, OSX/- , , OSX.