gpt4 book ai didi

macos - Docker 中的 NFS : exportfs: does not support NFS export

转载 作者:行者123 更新时间:2023-12-01 06:08:07 28 4
gpt4 key购买 nike

我正在使用 docker NFS 容器,但是在安装导出的目录(即使在本地主机上)时遇到了麻烦。

问题

exportfs: <path> does not support NFS export

设置

我的容器使用入口点脚本来
  • 将目录(通过命令行参数提供)写入 /etc/exports ,
  • 调用 rpcbindservice nfs-kernel-server start , 和
  • 遵循 inotifywait保持运行。

  • Dockerfile 没什么特别的。我安装 inotify-toolsnfs-kernel-server ,公开端口 2049,并复制入口点脚本。

    我正在使用 docker-machine在 El Capitan Macbook 上。

    我将卷从主机映射到容器中,以便让 nfs 服务器访问我想要导出的目录。

    入口点脚本
    modprobe nfs
    modprobe nfsd

    for x in ${@}; do
    echo -e "$x\t*(rw,sync,no_subtree_check,crossmnt,fsid=root,no_root_squash)" >> /etc/exports
    done

    source /etc/default/nfs-kernel-server
    source /etc/default/nfs-common

    rpcbind
    service nfs-kernel-server start

    exec inotifywait --monitor /exports

    调试

    这是我尝试导出的设置。
    %> ls $HOME/mounts
    a
    %> ls $HOME/mounts/a
    asdf

    这是我启动服务器的方式。
    %> docker run --privileged --rm --name=nfs-server --volume=$HOME/mounts/a/:/exports/a docker-nfs-server /exports/a
    Exporting directories for NFS kernel daemon...exportfs: /exports/a does not support NFS export
    .
    Starting NFS kernel daemon: nfsd mountd.
    Setting up watches.
    Watches established.

    这是我在容器运行时一直在做的调试。
    %> docker exec -it nfs-server bash
    root@6056a33f061e:/# ls /exports
    a
    root@6056a33f061e:/# ls /exports/a
    asdf
    root@6056a33f061e:/# showmount -a
    All mount points on 6056a33f061e:
    root@6056a33f061e:/# exportfs -a
    exportfs: /exports/a does not support NFS export
    root@8ad67c951ecd:/# mount
    none on / type aufs (rw,relatime,si=3ca85db062268b32,dio,dirperm1)
    proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
    tmpfs on /dev type tmpfs (rw,nosuid,mode=755)
    devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666)
    mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime)
    sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
    tmpfs on /sys/fs/cgroup type tmpfs (rw,nosuid,nodev,noexec,relatime,mode=755)
    cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
    cgroup on /sys/fs/cgroup/cpu type cgroup (rw,nosuid,nodev,noexec,relatime,cpu)
    cgroup on /sys/fs/cgroup/cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct)
    cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
    cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
    cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
    cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
    cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
    cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
    cgroup on /sys/fs/cgroup/net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_prio)
    cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
    /dev/sda1 on /exports type ext4 (rw,relatime,data=ordered)
    Users on /exports/a type vboxsf (rw,nodev,relatime)
    /dev/sda1 on /etc/resolv.conf type ext4 (rw,relatime,data=ordered)
    /dev/sda1 on /etc/hostname type ext4 (rw,relatime,data=ordered)
    /dev/sda1 on /etc/hosts type ext4 (rw,relatime,data=ordered)
    shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=65536k)
    nfsd on /proc/fs/nfsd type nfsd (rw,relatime)

    我知道的

    低于琼恩·雪诺。我可以确定一些可能导致我的问题的变量,但我不知道如何验证它们中的任何一个:
  • $HOME/mounts/a在 OSX 文件系统上
  • 该文件系统已加密
  • /exports/a正在安装到 docker-machine VM

  • 我对 NFS 没有足够的经验,不知道如何有效地调试它。任何帮助或信息将不胜感激。

    更新

    它适用于 Parallels!
    %> docker run --privileged --rm --name=nfs-server --volume=$HOME/mounts/a/:/exports/a docker-nfs-server /exports/a
    %> docker exec -it nfs-server bash
    root@3786d888f039:/# mkdir --parents /imports/a
    root@3786d888f039:/# mount --types nfs --options nolock,proto=tcp,port=2049 localhost:/exports/a /imports/a
    root@3786d888f039:/# ls /imports
    a
    root@3786d888f039:/# ls /imports/a
    root@3786d888f039:/# ls /exports
    a
    root@3786d888f039:/# ls /exports/a
    root@3786d888f039:/# touch /exports/a/asdf
    root@3786d888f039:/# ls /exports/a
    asdf
    root@3786d888f039:/# ls /imports/a/
    asdf

    这样就可以将问题缩小到 OSX/docker-machine 甚至 OSX 上的加密文件系统。

    最佳答案

    问题出在码头机器上。如果你想使用 nfs 挂载,你需要在机器本身而不是容器中运行 modprobe nfs。容器使用机器的内核。与 modprobe nfs 和 nfs 服务器相同。

    关于macos - Docker 中的 NFS : exportfs: <path> does not support NFS export,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36110703/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com