1

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

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

4

2 回答 2

1

我找到了一个解决方案并想在这里分享它,这样它可以帮助其他想要做同样事情的人。运行 docker 命令(不带 sudo)的用户需要拥有 docker 组。所以我尝试将服务帐户添加为用户并将其提供给 docker 组,仅此而已。docker login到 gcr 工作,也是如此docker run。所以问题解决了,但这引发了几个额外的问题。

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

于 2019-02-23T19:43:46.440 回答
0

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

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

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

在创建VM 实例时,从控制台创建服务帐户会容易得多。创建 VM 实例后,您可以将服务帐户添加到 docker groupadd 目录。

如果您想请求 GCE 中的新功能,您可以访问此站点提交公共问题跟踪器。

于 2019-03-01T23:38:52.747 回答