Facts:
- Docker Engine 29.1.3 running on Alpine x86_64
- NFS share available via OpenMediaVault
- Docker Swarm with 3 nodes (1 Master, 2 workers)
- All nodes are dual-stack with static IPs
- All Hostnames are resolvable, all reverse lookups exist
I’m trying to deploy Portainer using the default YAML for a Swarm, with the addition of these lines for the data volume:
volumes:
portainer_data:
driver: local
driver_opts:
type: "nfs"
o: "rw,soft,vers=4.2,clientaddr=swarm01.domain,clientaddr=swarm02.domain,clientaddr=swarm03.domain"
device: "omv.domain:/docker/portainer"
This however fails with an unspecified “invalid argument” error.
Manually mounting the path works:
mount omv.domain:/docker/portainer /var/lib/docker/volumes/portainer_portainer_data/_data \
-o rw,soft,vers=4.2,clientaddr=swarm01.domain,clientaddr=swarm02.domain,clientaddr=swarm03.domain
None of the logs provide any insight as to what exactly is the problem. Even when the options were reduced to rw,soft it still failed.
volume inspect:
[
{
"CreatedAt": "2026-03-03T14:25:25Z",
"Driver": "local",
"Labels": {
"com.docker.stack.namespace": "portainer"
},
"Mountpoint": "/var/lib/docker/volumes/portainer_portainer_data/_data",
"Name": "portainer_portainer_data",
"Options": {
"device": "omv.domain:/docker/portainer",
"o": "rw,soft,vers=4.2,clientaddr=swarm01.domain,clientaddr=swarm02.domain,clientaddr=swarm03.domain",
"type": "nfs"
},
"Scope": "local"
}
]
Any help would be appreciated.