拒绝访问Docker容器访问NFS共享的权限-Docker Compose

时间:2019-11-11 23:41:27

标签: docker containers nfs

我在使用Docker Compose将WD MyCloud EX2 NAS作为Nextcloud和MariaDB容器组合的NFS共享安装时遇到问题。运行docker-compose up -d时,出现以下错误:

Creating nextcloud_app_1 ... error

ERROR: for nextcloud_app_1  Cannot create container for service app: b"error while mounting volume with options: type='nfs' device=':/mnt/HD/HD_a/nextcloud' o='addr=192.168.1.73,rw': permission denied"

ERROR: for app  Cannot create container for service app: b"error while mounting volume with options: type='nfs' device=':/mnt/HD/HD_a/nextcloud' o='addr=192.168.1.73,rw': permission denied"
ERROR: Encountered errors while bringing up the project.

这里是docker-compose.yml(所有敏感信息都替换为<括号>

Version: '2'

volumes:
  nextcloud:
    driver: local
    driver_opts:
      type: nfs
      o: addr=192.168.1.73,rw
      device: ":/mnt/HD/HD_a/nextcloud"
  db:

services:
  db:
    image: mariadb
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    restart: always
    volumes:
      - db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=<****>
      - MYSQL_PASSWORD=<****>
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - NEXTCLOUD_ADMIN_USER=<****>
      - NEXTCLOUD_ADMIN_PASSWORD=<****>

  app:
    image: nextcloud
    ports:
      - 8080:80
    links:
      - db
    volumes:
      - nextcloud:/var/www/html
    restart: always

我通过SSHd进入NAS框中以检查/ etc / exports,并且确定是使用all_squash,所以我更改了它。

这是NAS盒上的/ etc / exports文件:

    "/nfs/nextcloud" 192.168.1.73(rw,no_root_squash,sync,no_wdelay,insecure_locks,insecure,no_subtree_check,anonuid=501,anongid=1000)
    "/nfs/Public" 192.168.1.73(rw,no_root_squash,sync,no_wdelay,insecure_locks,insecure,no_subtree_check,anonuid=501,anongid=1000)

然后,我用exportfs -a

刷新了服务

什么都没改变-docker-compose抛出相同的错误。每次尝试构建时,我都会删除所有容器和图像,然后重新下载图像。

我已经阅读了类似的问题,并做了我能想到的一切。我也知道这是一个容器问题,因为多亏了/etc/fstabs中的设置,我可以从命令行非常愉快地访问NFS共享。

我还要在这里做什么?

3 个答案:

答案 0 :(得分:0)

尝试使用命令行ini nextcloud文件夹“ ls -l / var / www / html”进行检查,查看可以访问它的组和用户

答案 1 :(得分:0)

我通过删除NAS框的anonuid=501,anongid=1000文件中的/etc/exports项来修复它,并且还设法输入了错误的IP-NAS框未授予对Ubuntu计算机的访问权限尝试与其连接。

答案 2 :(得分:0)

在我们的例子中,我们在 docker 主机上本地安装 nfs 卷,然后在容器内安装文件夹。

我们运行的是 oracle-linux 7,启用了 SElinux。 我们通过在 fs_mntops 块中的 /etc/fstab 中添加以下参数来修复(参见 https://man7.org/linux/man-pages/man5/fstab.5.html):

defaults,context="system_u:object_r:svirt_sandbox_file_t:s0"