如何授予IAM服务帐户在GCP VM中运行Docker容器的权限?

时间:2019-02-22 15:46:02

标签: google-cloud-platform google-compute-engine google-cloud-iam

我正在尝试在Google Cloud VM启动时运行docker映像。我已通过控制台在VM实例详细信息下选择了一个新创建的服务帐户作为服务帐户。由于某种原因,启动脚本中的docker run命令无法正常工作。我怀疑这是因为该服务帐户无权在VM中运行“ docker”命令-该命令是通过yum安装安装的。谁能告诉我如何做到这一点,即授予该服务帐户运行docker命令的权限?

编辑。 在启动脚本中,我正在运行docker login命令登录到Google Container Registry,然后运行docker run运行图像。

2 个答案:

答案 0 :(得分:1)

如本this所述,您采取的步骤是正确的方法。将用户添加到“ docker”组将允许用户以非超级用户身份运行docker命令。如果您创建一个新的服务帐户并希望该服务帐户在VM实例中运行docker命令,那么您也必须将该服务帐户添加到docker组。

如果您在VM实例上更改服务帐户,则只要未从Docker组中删除旧服务帐户且未从Cloud IAM中删除旧服务帐户,旧服务帐户仍应能够运行docker命令;但是,您仍然需要将新服务帐户添加到docker组,以允许其以非root用户身份运行docker命令。

更新:在VM实例上手动创建时,自动创建服务帐户会很乏味。在启动脚本中,您必须首先使用article创建服务帐户,然后添加适当的gcloud commands。完成后,您仍然必须将服务帐户添加到docker groupadd目录中。

在创建VM实例时,从IAM roles创建服务帐户会容易得多。创建虚拟机实例后,您可以将服务帐户添加到docker groupadd目录中。

如果您想在GCE中请求新功能,可以通过访问Console来提交《公共问题跟踪》。

答案 1 :(得分:0)

我找到了一个解决方案,并想在这里分享,这样可以帮助其他希望做同样事情的人。运行docker命令(无sudo)的用户需要具有docker组。因此,我尝试将服务帐户添加为用户,并将其分配给docker组,仅此而已。 docker login对gcr起作用,docker run也是如此。因此问题得以解决,但这又引发了另外两个问题。

首先,这是正确的方法吗?如果不是,那是什么?如果这确实是正确的方法,则可能在创建VM(VM)时必须将创建VM时选择的服务帐户添加为用户。我了解这会导致一些复杂情况,例如更改服务帐户后会发生什么。旧的服务帐户用户是否被删除还是应该保留?但是我认为至少可以选择将服务帐户用户添加到VM(类似于控制台中的复选框),以便最终用户可以接听电话。希望GCP的人能读懂。