【问题标题】:Docker file already exists when mounting with gcsfuse使用 gcsfuse 挂载时 Docker 文件已存在
【发布时间】:2018-12-11 08:11:43
【问题描述】:

所以,我使用gcsfuse --implicit-dirs [bucket] [mount-point] 命令在我的虚拟机上安装了一个 GCS 存储桶。
我使用与 docker 相同的 [mount-point] 来保存我的数据。但是,当我使用 docker-compose up 启动容器时,我收到一条错误消息,提示 mkdir file exists

我在卸载存储桶并使用gcsfuse --implicit-dirs -o allow_others [bucket] [mount-point] 再次安装它后让它工作。但是,我读到使用 -o allow_others 标志是不安全的。

如果不使用此标志,我应该如何使其工作?

【问题讨论】:

  • 如果没有看到您的Dockerfile,就很难诊断。你介意发布一个链接吗?

标签: docker google-cloud-platform google-cloud-storage google-compute-engine gcsfuse


【解决方案1】:

根据this link,需要标志-o allow_others。有几篇示例文章herehere

Here,他们也使用 -o allow_others 标志。使用相同的挂载点时出现相同的错误,尽管它们没有使用 GCS 存储桶。他们复制了你的问题。挂载时需要传递 -o allow_other 。否则 mount 只能由您当前的用户使用。 Docker 守护进程以 root 身份运行,而不是以普通用户身份运行,因此它无法访问文件。如果您的用户具有挂载权限,则挂载时不需要 Sudo。请参阅this

【讨论】:

  • 我无法 mkdir 或触摸容器内部,即使我包含了 allow_other 标志。
  • 感谢您的回复。您能告诉我您使用了我发布的哪些文件吗?此外,为了重现该问题,您可以让我知道有关您的容器图像的更多详细信息。
  • 我尝试了所有链接,但没有一个有帮助。我有两个 docker 容器,其中一个带有一个简单的 nginx,它将代理流量反向到 php-fpm 7.2.2 映像,该映像本质上是一个 Laravel 应用程序。
【解决方案2】:

我尝试做同样的事情,但遇到了很多问题。我写了一个教程,解释了如何从 Docker 容器中端到端地在 GCE 上挂载 GCS 存储桶:

【讨论】:

    猜你喜欢
    • 2017-05-26
    • 2016-04-17
    • 2018-10-16
    • 2018-05-08
    • 2022-01-21
    • 2019-09-05
    • 2020-06-29
    • 1970-01-01
    • 2019-01-09
    相关资源
    最近更新 更多