从存储到计算实例运行容器的`gsutil cp`不会复制文件

时间:2018-03-29 01:06:07

标签: google-cloud-platform google-cloud-storage google-compute-engine gsutil

我正在运行带有coreos容器的Google计算实例(图片名称:coreos-stable-1688-4-0-v20180327)。使用gsutil将文件从存储复制到本地文件系统似乎工作正常 - 除了文件系统上没有任何所谓的复制文件。在不使用容器的情况下在计算实例上运行相同的复制命令确实有效,所以我想问题就在于容器。但是,我不确定容器导致副本失败的原因。

命令为gsutil cp -r gs://my-bucket ./

1 个答案:

答案 0 :(得分:1)

您正在遇到https://github.com/GoogleCloudPlatform/gsutil/issues/453中描述的问题。为gsutil设置的别名在容器中运行gsutil(无法访问主机文件系统),因此文件被复制到该容器的文件系统,而不是你的GCE主持人。在该主题中建议了一些解决方法。

编辑以获得更好的阅读 (来自GitHub问题线程的信息):

看起来GCE VM为gsutil设置了漂亮的别名:

$ type gsutil
gsutil is aliased to `(docker images google/cloud-sdk || docker pull google/cloud-sdk) > /dev/null;docker run -t -i --net=host -v /home/<USER>/.config:/root/.config google/cloud-sdk gsutil'
CoreOS实例上的

可能的解决方法

  • 克隆gsutil repo,运行git checkout <tag>以获取最新版本的提交,通过these instructions安装Python,然后确保直接在CoreOS上运行gsutil的本地副本主机,而不是运行容器化版本的gsutil。
  • 覆盖gsutil别名,或者创建一个新别名,以便在容器上安装主机文件系统的某些部分;这允许您在容器终止后访问新写入的文件。