Skip to main content
  1. Posts/

Setup NFS Server With Docker

·2 mins·
docker docker
Table of Contents

Penerapan NFS Server banyak digunakan untuk backup data sehingga diperlukan server fisik dengan jumlah slot disk yang cukup banyak (NAS). Namun ada juga yang menggunakan NFS untuk keperluan selain backup seperti untuk penyimpanan file website yang dihubungkan dengan webserver agar memberikan ketersediaan tinggi (High availability).

Panduan kali ini adalah cara cepat setup NFS server di Docker dan untuk selanjutnya dapat Anda sesuaikan dengan topologi atau kebutuhan yang diperlukan.

Create directory
#

mkdir -p /data/storage

direktori ini akan digunakan sebagai volume untuk SHARED_DIRECTORY.

Create container
#

docker run -dit --privileged --restart unless-stopped \
-e SHARED_DIRECTORY=/data -v /data/storage:/data \
-p 2049:2049 dockerinusa/nfs-server-alpine

Pastikan container status running

docker ps

Mount volume
#

Selanjutnya install NFS Client agar dapat mount volume di NFS server

sudo apt install nfs-client -y

Lalu mount dengan perintah

sudo mount -v -t nfs4 ip-nfs-server:/ /mnt

Cek mounting dengan df

df -hT
Filesystem     Type   Size  Used Avail Use% Mounted on
tmpfs          tmpfs   97M  1.1M   96M   2% /run
/dev/vda1      ext4   7.6G  2.6G  5.1G  34% /
tmpfs          tmpfs  484M     0  484M   0% /dev/shm
tmpfs          tmpfs  5.0M     0  5.0M   0% /run/lock
/dev/vda15     vfat   105M  6.1M   99M   6% /boot/efi
tmpfs          tmpfs   97M  4.0K   97M   1% /run/user/1000
192.168.5.1:/  nfs4   156G   28G  120G  19% /mnt

Multiple Shares
#

docker run -d --name nfs --privileged \
-p 2049:2049 \
-v /some/where/fileshare:/nfsshare \
-v /some/where/else:/nfsshare/another \
-e SHARED_DIRECTORY=/nfsshare \
-e SHARED_DIRECTORY_2=/nfsshare/another \
dockerinusa/nfs-server-alpine

Lalu coba mount pada sisi client

sudo mount -v ip-nfs-server:/ /mnt/one
sudo mount -v ip-nfs-server:/another /mnt/two

Jika ingin menambahkan lebih dari 2 volume. Edit /usr/bin/nfsd.sh dengan menambahkan konfig

if [ ! -z "${SHARED_DIRECTORY_2}" ]; then
  echo "Writing SHARED_DIRECTORY_2 to /etc/exports file"
  echo "{{SHARED_DIRECTORY_2}} {{PERMITTED}}({{READ_ONLY}},{{SYNC}},no_subtree_check,no_auth_nlm,insecure,no_root_squash)" >> /etc/exports
  /bin/sed -i "s@{{SHARED_DIRECTORY_2}}@${SHARED_DIRECTORY_2}@g" /etc/exports
fi

Ubah SHARED_DIRECTORY_2 menjadi SHARED_DIRECTORY_3 dan seterusnya

Related

Building Docker Images with Dockerfiles
·1 min
docker docker
Using Bridge Network in Docker
·3 mins
docker docker
Remote Host Docker menggunakan Docker Context
·2 mins
docker docker
Rename Docker Image with Tag
·1 min
docker docker
Install Docker
·3 mins
docker linux docker
Install Desktop di Console GCP
·1 min
docker docker gcp ubuntu