📚 How to Mount NFS Storage for Docker Containers (Docker Compose Version)
🧩 Purpose
Configure Docker Compose to automatically mount an NFS share as a volume into your containers without manually mounting it on the host.
1. Prerequisites
-
Install the NFS client:
sudo apt install nfs-common -y
-
Know your NFS server and export path.
Example:
-
NFS Server:
192.168.100.11
-
Export Path:
/mnt/hdd-storage/my-nfs-share
-
2. Example docker-compose.yml
version: '3.8'
services:
my-app:
image: my-docker-image
container_name: my-app
volumes:
- my-nfs-storage:/app/data
ports:
- "8080:8080"
restart: unless-stopped
volumes:
my-nfs-storage:
driver: local
driver_opts:
type: "nfs"
o: "addr=192.168.100.11,nfsvers=4,hard,timeo=600,retrans=2"
device: ":/mnt/hdd-storage/my-nfs-share"
3. Key Configuration Explained
Note: The colon
:
at the start ofdevice:
is important.
4. Deploy the Stack
Run this from the folder where docker-compose.yml
is located:
docker-compose up -d
Docker will:
-
Connect to the NFS server.
-
Mount the remote share.
-
Bind it into the container automatically.
5. Best Practices
-
Let Docker manage the NFS mount (don't mount manually with
mount
command if doing it this way). -
Ensure your NFS server is reachable before starting the container.
-
Use
restart: unless-stopped
to automatically recover from network issues. -
For production setups, use hard mounts with retries (
hard,timeo=600,retrans=2
).
6. Summary Table
🚀 Bonus: Troubleshooting NFS Mounts
Common issues:
-
Permission Denied
-
Check server-side export permissions (e.g.,
/etc/exports
). -
Verify the NFS share allows the client IP.
-
Set correct UID/GID or enable
no_root_squash
if necessary.
-
-
Slow Performance
-
Try using
rsize=131072,wsize=131072
options. -
Check if NFS server is overloaded.
-
Prefer NFSv4 for better performance.
-
-
Mount Failures
-
Verify NFS server IP and path.
-
Check firewall rules (port 2049 TCP/UDP for NFS).
-
🎯 Final Tip
For critical workloads:
Use a private network between Docker and the NFS server for security and stability!
✅ Now this will display perfectly in Bookstack 📚
✅ With clean titles, proper spacing, clean code blocks, and info boxes.
No Comments