如何在启动时将 Bucket 附加到 Google Compute Engine VM?
How to attach Bucket to Google Compute Engine VM on Startup?
我想在启动时使用 Container Optimized OS 将存储桶的内容复制到 VM。当服务器关闭时,我想将更改保存回存储桶。
我试过制作启动脚本
#!/bin/bash
toolbox
gsutil cp -r gs://my-bucket/
但是,如果我手动运行它,这会导致 VM 启动失败,尽管此脚本可以正常工作。
我想我找到了一个合理的解决方案。我的脚本已更改为
#! /bin/bash
toolbox --bind=/home/username/bucket-folder:/my-bucket <<< "gsutil cp -r /my-bucket/* gs://my-bucket"
所以我们需要调用 toolbox --bind 将文件夹从服务器绑定到 toolbox 容器。然后我们使用 <<< 在容器启动时将整个命令传递给容器,因此我们复制到新绑定的目录,以便它返回到服务器。
现在当我在 docker 容器中绑定目录时,一切都在那里!
我刚试过:
#! /bin/bash
gsutil cp -r gs://my-bucket /
它对我有用。您之前执行的 toolbox
命令是什么?
无论如何你可以看到 Serial Port Output.
中失败的原因
编辑:在Container Optimized OS this does not work as this OS does not have the gsutil package preinstalled
. Refer to @DanBaba .
我想在启动时使用 Container Optimized OS 将存储桶的内容复制到 VM。当服务器关闭时,我想将更改保存回存储桶。
我试过制作启动脚本
#!/bin/bash
toolbox
gsutil cp -r gs://my-bucket/
但是,如果我手动运行它,这会导致 VM 启动失败,尽管此脚本可以正常工作。
我想我找到了一个合理的解决方案。我的脚本已更改为
#! /bin/bash
toolbox --bind=/home/username/bucket-folder:/my-bucket <<< "gsutil cp -r /my-bucket/* gs://my-bucket"
所以我们需要调用 toolbox --bind 将文件夹从服务器绑定到 toolbox 容器。然后我们使用 <<< 在容器启动时将整个命令传递给容器,因此我们复制到新绑定的目录,以便它返回到服务器。
现在当我在 docker 容器中绑定目录时,一切都在那里!
我刚试过:
#! /bin/bash
gsutil cp -r gs://my-bucket /
它对我有用。您之前执行的 toolbox
命令是什么?
无论如何你可以看到 Serial Port Output.
中失败的原因编辑:在Container Optimized OS this does not work as this OS does not have the gsutil package preinstalled
. Refer to @DanBaba