├── Dockerfile ├── README.md ├── nfs.init ├── nfs.stop └── nfs_setup.sh /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu 2 | ENV DEBIAN_FRONTEND noninteractive 3 | RUN apt-get update -qq && apt-get install -y nfs-kernel-server runit inotify-tools -qq 4 | RUN mkdir -p /exports 5 | 6 | RUN mkdir -p /etc/sv/nfs 7 | ADD nfs.init /etc/sv/nfs/run 8 | ADD nfs.stop /etc/sv/nfs/finish 9 | 10 | ADD nfs_setup.sh /usr/local/bin/nfs_setup 11 | 12 | RUN echo "nfs 2049/tcp" >> /etc/services 13 | RUN echo "nfs 111/udp" >> /etc/services 14 | 15 | VOLUME /exports 16 | 17 | EXPOSE 111/udp 2049/tcp 18 | 19 | ENTRYPOINT ["/usr/local/bin/nfs_setup"] 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Docker NFS Server 2 | ================ 3 | 4 | Usage 5 | ---- 6 | ```bash 7 | docker run -d --name nfs --privileged cpuguy83/nfs-server /path/to/share /path/to/share2 /path/to/shareN 8 | ``` 9 | 10 | ```bash 11 | docker run -d --name nfs-client --privileged --link nfs:nfs cpuguy83/nfs-client /path/on/nfs/server:/path/on/client 12 | ``` 13 | 14 | More Info 15 | ========= 16 | 17 | See https://container42.com/2014/03/29/docker-quicktip-4-remote-volumes/ 18 | -------------------------------------------------------------------------------- /nfs.init: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | . /etc/default/nfs-kernel-server 4 | . /etc/default/nfs-common 5 | 6 | rpcbind 7 | service nfs-kernel-server start 8 | 9 | exec inotifywait -m /exports 10 | -------------------------------------------------------------------------------- /nfs.stop: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | service nfs-kernel-server stop 4 | kill $(pidof rpcbind) 5 | service rsyslog stop 6 | -------------------------------------------------------------------------------- /nfs_setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | mounts="${@}" 6 | 7 | echo "#NFS Exports" > /etc/exports 8 | 9 | for mnt in "${mounts[@]}"; do 10 | src=$(echo $mnt | awk -F':' '{ print $1 }') 11 | mkdir -p $src 12 | echo "$src *(rw,sync,no_subtree_check,fsid=0,no_root_squash)" >> /etc/exports 13 | done 14 | 15 | exec runsvdir /etc/sv 16 | --------------------------------------------------------------------------------