Search code examples
dockercentosmountnfs

Mounting nfs shares inside docker container


Does anyone know how to mount nfs share inside docker container with centos base image? I've tried this command:

mount server:/dir /mount/point

and got the next error:

mount.nfs: rpc.statd is not running but is required for remote locking.
mount.nfs: Either use '-o nolock' to keep locks local, or start statd.
mount.nfs: an incorrect mount option was specified

when I try to use it with -o nolock option, the error is:

mount.nfs: Operation not permitted

Solution

  • Starting from docker 17.06, you can mount NFS shares to the container directly when you run it, without the need of extra capabilities

    export NFS_VOL_NAME=mynfs
    export NFS_LOCAL_MNT=/mnt/mynfs
    export NFS_SERVER=my.nfs.server.com
    export NFS_SHARE=/my/server/path
    export NFS_OPTS=vers=4,soft
    
    docker run --mount \
      "src=$NFS_VOL_NAME,dst=$NFS_LOCAL_MNT,volume-opt=device=:$NFS_SHARE,\"volume-opt=o=addr=$NFS_SERVER,$NFS_OPTS\",type=volume,volume-driver=local,volume-opt=type=nfs" \
      busybox ls $NFS_LOCAL_MNT
    

    Alternatively, you can create the volume before the container:

    docker volume create \
      --driver local \
      --opt type=nfs \
      --opt o=addr=$NFS_SERVER,$NFS_OPTS \
      --opt device=:$NFS_SHARE \
      $NFS_VOL_NAME
    
    docker run --rm -v $NFS_VOL_NAME:$NFS_LOCAL_MNT busybox ls $NFS_LOCAL_MNT