我正在尝试在GCP VM实例中部署和运行docker映像。我需要它来访问特定的Cloud Storage Bucket(读和写)。
我如何在虚拟机内部安装存储桶?如何在我的VM中运行的Docker容器中安装存储桶?
我已经阅读了一段时间的google cloud文档,但我仍然感到困惑。所有指南都显示了如何从本地计算机访问存储桶,而不是如何将其安装到VM。https://cloud.google.com/storage/docs/quickstart-gsutil
发现了有关Fuse的信息,但仅将单个存储桶安装到VM文件系统看起来就太复杂了。
Google Cloud Storage是一个对象存储API,不是文件系统。结果,它并不是真正设计为“挂载”在VM中。它的设计具有很高的耐用性,并且可以扩展到非常大的对象(和大量对象)。
尽管您可以使用gcsfuse将其挂载为文件系统,但是该方法有很多明显的缺点。例如,对于一个普通的文件系统,执行even simple operations可能会增加操作数量。
同样,有许多surprising behaviors是由于它是对象存储这一事实而导致的。例如,您不能编辑对象-它们是不可变的。为了给写到对象中间的错觉,实际上是在调用close()
或fsync()
时删除并重新创建对象。
使用GCS的最佳方法是将应用程序设计为直接使用the API(或S3 compatible API)。这样,应用程序就可以很好地理解语义,并且可以对其进行优化以获得更好的性能并控制成本。因此,要从docker容器访问它,请确保您的容器具有通过GCS进行身份验证的方式(通过实例上的凭据,或通过部署具有访问桶的必要权限的key for a service account),然后拥有该应用程序直接调用API。
最后,如果您实际上需要的是文件系统,而不是GCS,如果您需要一个针对该特定用例设计的大型可挂载文件系统,则Google Cloud会提供至少两种其他选择:
us-central1
中为$ 0.04 / GB /月),并且具有最小大小要求(1TB)。没有FUSE之类的第三方软件,无法将Google Cloud Storage存储桶安装在Google Compute实例或容器中。 Linux和Windows都没有内置的Cloud Storage驱动程序。