EDIT

I found the issue, it was me!! LOL I thought it had to be a setting I had forgotten and it was, I forgot to enable NFS & Nesting under Features in the Otions of the cotainer, see this image - https://imgur.com/bSiozKS

Thank you to everyone that took the time to reply and offer their suggestions.

Hi All,

Let me start with some basic basic background on my set up, I have a server running Proxmox with some Ubuntu containers. I have a separate server running TrueNas with a share that has both NFS & SMB set up. I can see this share in Windows 11 and read and write to it.

One of the Ubuntu containers is able to see this share via NFS and read and write to it too. I am testing Sonarr, Prowlarr & Qbittorrent Docker containers and got the basics set up, Sonarr can find episodes via Prowlarr of a TV show, hand it off to Qbittorrent to download and then move it from the download folder to the TV folder. Both the download folder and the TV folder are on the TrueNas server.

I then set up a Docker container for AudioBookShelf in the same Ubuntu CT and that can also read and write to the NFS share.

My issue is that I tried to set up another Ubuntu CT on the Proxmox server but cannot seem to access the NFS share on the TrueNas server.

This is what I did (which I think was the same process as the working CT)

  • 1/Create a privileged conatiner
  • 2/ Update and upgrade the CT
  • 3/ Install nfs-common
  • 4/ Create a directory in the CT in the /mnt directory for the NFS share
  • 5/ added this line to the fstab file in /etc 192.168.0.188:/mnt/store/test-share /mnt/test-share nfs defaults 0 0

However, when I run mount -a I get this error message mount.nfs: access denied by server while mounting 192.168.0.188:/mnt/store/test-share

Running df -h does not show the mount obviously but it does in the working CT

As a further test, I cloned the working CT, deleted all the Docker containers and I can still see the NFS just fine.

I have probably missed a step while setting up the new CT but I’m not sure what.

Can anyone offer some help?

  • Lem453
    link
    fedilink
    English
    arrow-up
    3
    ·
    edit-2
    11 months ago

    These comments all make this seem super complicated. I have a ZFS array on proxmox that exports itself over NFS and also an unraid server that has a share exported over NFS. I mount both into docker containers as needed. I’m on my phone so I’ll just copy and paste my install notes, hope that helps. You don’t need privileged docker containers to mount NFS. Docker compose has NFS mounting built in. Before the practice was to mount NFS on the docker host, then pass it to the container. This is not the way to do it anymore, you should mount NFS shares in the container itself, not the docker host. That way if the share fails the mount the docker containers knows it didn’t mount rather than thinking it did work and the folder is just empty.


    Proxmox Host Setup for NFS, only needed if NFS is being exported from proxmox itself otherwise can skip this:
    -> proxmox install NFS server: apt install nfs-kernel-server
    -> create a filesystem for dockerData (makes snapshots easier and limits permissions)
    -> zfs create zfspool1/dockerData
    -> zfs set sharenfs='[email protected]/24,no_root_squash' zfspool1/dockerdata
    -> zfs get sharenfs (to make sure only specific file systems are shared)
    

    If exporting NFS from unraid, otherwise you can skip

    -> export NFS share with 'private' and set rule to: 192.168.37.0/24(rw)
    

    Docker host setup, this will vary depend on which OS you are using to run docker. Essentially you have to make sure NFS is installed on the docker host(in my case I run an alpine server VM on proxmox):

     -> apk add nfs-utils
    -> rc-update add nfsmount
    -> rc-service nfsmount start
    

    In docker compose you will need a volume section at the top

    volumes:
      sonarr-config:
        name: sonarr-config
        driver_opts:
          type: nfs
          o: addr=192.168.37.25,nolock,soft,rw
          device: :/zfspool1/dockerData/arr-stack/
    

    Followed by something this for the app itself:

      arr-stack-sonarr:
        image: ghcr.io/linuxserver/sonarr
        container_name: arr-stack-sonarr
        volumes:
          - sonarr-config:/config
          - media-tv:/tv
          - media-downloads:/downloads:z