gpt4 book ai didi

docker - 使用 gcsfuse 安装的存储桶中的数据在 Google Cloud 实例上运行 Docker

转载 作者:行者123 更新时间:2023-12-02 07:10:56 28 4
gpt4 key购买 nike

我正在尝试运行 Docker 容器来分析 Google Cloud Bucket 中的数据。

我已经能够使用 gcsfuse 成功挂载存储桶,并且我测试了我可以执行诸如在存储桶中创建和删除文件之类的操作。

为了能够安装其他程序(并挂载存储桶),我安装了 Docker(并且没有使用 Docker 优化实例选项)。如果我以交互模式运行 Docker(不安装驱动器),看起来它工作正常。

但是,如果我尝试使用已安装的驱动器(即 gcsfuse 安装的存储桶)以交互模式运行 Docker,则会收到一条错误消息:

user@instance:~/bucket-name/subfolder$ docker run -it -v /home/user/bucket-name:/mnt/bucket-name gcr.io/deepvariant-docker/deepvariant
docker: Error response from daemon: error while creating mount source path '/home/user/bucket-name': mkdir /home/user/bucket-name: file exists.

我希望我即将完成这项工作:有人对这个错误消息的相对简单的修复有任何想法吗?

顺便说一句,我意识到还有其他方法可以在 Google Cloud 上运行 DeepVariant,但我正在尝试使事情尽可能类似于我在 AWS 上所做的事情(另外,我可能需要进行一些额外的故障排除以进行分析我的一个文件)。

非常感谢您的帮助!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~

仅供引用,这就是我安装存储桶的方式:

#mount directory: https://github.com/GoogleCloudPlatform/gcsfuse/blob/master/docs/installing.md
export GCSFUSE_REPO=gcsfuse-`lsb_release -c -s`
echo "deb http://packages.cloud.google.com/apt $GCSFUSE_REPO main" | sudo tee /etc/apt/sources.list.d/gcsfuse.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo apt-get update
sudo apt-get -y install gcsfuse

#restart and mount directory: https://cloud.google.com/storage/docs/gcs-fuse
#NOTE: please make sure you are in your home directory (I encounter issues if I try to mount from /mnt)
mkdir [bucket-name]
gcsfuse -o allow_other --file-mode 777 --dir-mode 777 [bucket-name] ./[bucket-name]

这就是我安装 Docker 的方式:

#install Docker for Debian: https://docs.docker.com/install/linux/docker-ce/debian/
sudo apt-get update
sudo apt-get -y install \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get -y --allow-unauthenticated install docker-ce docker-ce-cli containerd.io

#fix Docker sock issue: https://stackoverflow.com/questions/47854463/got-permission-denied-while-trying-to-connect-to-the-docker-daemon-socket-at-uni
sudo usermod -a -G docker [user]
#have to restart after this

最佳答案

对于遇到类似错误/问题的任何人 - 这对我有用。我采取的步骤:

  1. 如果磁盘已挂载,请先卸载它:sudo umount/mounted_folder
  2. 使用以下命令重新挂载磁盘,并列出要显式使用的凭据文件
sudo GOOGLE_APPLICATION_CREDENTIALS=/home/user/credentials/example-asdf21b0af7.json gcsfuse -o allow_other bucket_name /mounted_folder
  • 现在应该已成功连接,没有进一步的错误:)
  • 注意:每次重新启动计算机/虚拟机后都需要运行此命令。将其格式化为 fstab 可能可以完成,这样就不需要在每次重新启动时手动执行这些步骤。

    说明:我在这里所做的是通过具有适当访问权限的用户/服务帐户的凭证 JSON 显式指定凭证(此处未解释如何获取此凭证,但应该是 googl 可用的)并在GOOGLE_APPLICATION_CREDENTIALS 环境变量选项,如以下答案所建议:https://stackoverflow.com/a/39047673/10002593 。需要此环境变量选项可能是由于 gcsfuse 由于某种原因未在 gcloud config 中注册与激活帐户相同的访问级别。

    关于docker - 使用 gcsfuse 安装的存储桶中的数据在 Google Cloud 实例上运行 Docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55624506/

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