在Docker容器里推荐GCE服务帐号authentication?

在定制的CentOS Docker容器中部署Google服务帐户凭证的最佳方式是在Google的Container Engine或其“container-vm”上运行? 这种行为自动发生在运行debian的google / cloud-sdk容器上,并且包含了我没有使用的东西,例如app-eng / java / php。 理想情况下,我试图访问我的项目中的非公共资源,例如Google Cloud Storage存储桶对象,而不必每次login和授权大量这些容器启动。

例如,在安装了自定义代码和gcloud / gsutil的GCE上运行的基础Centos容器上运行时:

docker run --rm -ti custom-container gsutil ls 

系统会提示您运行“gsutil config”以获得授权,我期望。

然而,将google / cloud-sdk容器拉到相同的GCE上并执行相同的命令,似乎巧妙地configuration了凭据的inheritance(可能来自主机container-vm的凭据?)。 当在GCE上运行容器来访问专用资源时,这似乎绕过运行“gsutil config”。

我正在寻找复制这个行为在最小的build设Centos容器大规模部署。

更新:截至2016年12月15日,更新现有虚拟机的范围的能力现在处于testing阶段; 看到这个答案的更多细节。


旧答案:一种方法是创build具有适当范围的VM(例如,Google Cloud Storage只读或读写),然后VM上的所有进程(包括容器)都将有权访问可通过OAuth 2.0使用的凭据; 请参阅Google云端存储和Google计算引擎的文档。

需要注意的是,一旦一个虚拟机创build了一些范围集合,以后不能更改(既不添加也不删除),所以在创build虚拟机实例时,必须确保设置合适的范围集合。

跟进。

我结束了使用/.config&/.gce目录和一个非常小的一套GCE SDK组件(没有JDK / PHP /等)。 事实certificate, wheezy-cloudtools Dockerfile是我能find的最好的例子。