【问题标题】:Docker-Compose too many levels of symlinks with NFSDocker-使用 NFS 编写太多级别的符号链接
【发布时间】:2020-11-03 02:58:50
【问题描述】:

我正在尝试批量挂载一个 nfs 共享,但我遇到了一些问题。当我运行常规 docker 命令时,例如:

docker run -i -t privileged=true -v /mnt/bluearc:/mnt/bluarc -v /net:/net ubuntu bash

我在/mnt/bluearc 安装了我想要的驱动器。但是,如果我使用 docker-compose 运行它:

test_ser:
  container_name: test_ser
  hostname: test_ser
  image: ubuntu
  restart: always
  working_dir: /repo/drop_zone_dub
  volumes_from:
    - nerve_repo_data
  volumes:
    - /mnt/bluearc:/mnt/bluearc
    - /net:/net
  privileged: true
  command: bash

当我尝试访问目录时,出现以下错误:

Too many levels of symbolic links

compose 有什么不同的做法会导致这种情况?

【问题讨论】:

  • 您的nerve_repo_data 卷是否也包含相同的卷?
  • 不,它只包含直接存储库,但好主意

标签: docker docker-compose nfs


【解决方案1】:

我遇到了同样的问题,在这里找到了一个隐藏的 docker 参数:

https://github.com/moby/moby/issues/24303

-v /nfs:/nfs:shared

到目前为止它对我有用。

【讨论】:

    【解决方案2】:

    我怀疑这与 Docker 和自动挂载有关。见https://serverfault.com/questions/640895/why-do-some-host-volumes-in-docker-containers-give-the-error-too-many-levels-of 这似乎只是 Docker 做不到的事情。

    【讨论】:

      【解决方案3】:

      我们通常使用:

      -v /nfs:/nfs:slave

      我们发现使用 autofs/auto-mounter 效果更好。

      【讨论】:

      • 你把这个命令放在哪里?在 docker-compose.yml 里面?还是就在 docker-compose up 后面?导致该命令无法识别。
      【解决方案4】:

      在这个帖子中,我找到了解决方案 https://github.com/docker/for-win/issues/5763

      通过chocolately 恢复到旧版本的docker-desktop 对我有帮助。

      choco uninstall docker-desktop
      choco install docker-desktop --version=2.1.0.5 --allow-downgrade
      

      这个问题显然是windows使用的linux内核的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-09-26
        • 2015-07-14
        • 1970-01-01
        • 2021-10-14
        • 1970-01-01
        • 1970-01-01
        • 2022-01-12
        相关资源
        最近更新 更多