使用Docker验证Google GCP时遇到问题

时间:2019-01-07 05:35:18

标签: windows docker google-cloud-platform google-authentication google-cloud-sdk

我需要处理存储在Google gcr.io集线器中的一些先前推送的docker映像。

我是通过Windows 10计算机执行此操作的,该计算机具有Docker和Google Cloud SDK的标准安装(没有Homebrew或类似的东西)。

在GCP的IAM部分中为我的gmail帐户设置权限后,在PowerShell中使用此消息时,我仍然收到此错误消息:

docker pull gcr.io/blabla/blabla:latest
  

来自守护程序的错误响应:未经授权:您不需要   执行此操作的权限,您可能无效   证书。要验证您的请求,请按照以下步骤操作:   https://cloud.google.com/container-registry/docs/advanced-authentication

再次进行设置authentication时,我收到这些错误消息

  

C:\ Program Files(x86)\ Google \ Cloud SDK> gcloud auth configure-docker

     

警告:docker-credential-gcloud不在系统PATH中。 gcloud的   可以配置Docker凭证帮助器,但直到   这已得到纠正。

     

警告:docker不在系统PATH中。 docker和   docker-credential-gcloud必须位于同一PATH中才能   一起正常工作。 gcloud的Docker凭证助手可以是   配置,但在纠正此问题之前将无法正常工作。

在寻找解决方案时,我遇到了this thread,它似乎使用了macOS命令。我找到了Windows替代“哪个”(即“哪里”)的方法:

C:\Program Files (x86)\Google\Cloud SDK>where gcloud
C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin\gcloud
C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin\gcloud.cmd
C:\Users\l.cai\AppData\Local\Google\Cloud SDK\google-cloud-sdk\bin\gcloud
C:\Users\l.cai\AppData\Local\Google\Cloud SDK\google-cloud-sdk\bin\gcloud.cmd

但是我在理解this post explaining the alternative for readlink时遇到了很多麻烦。用文件路径替换该语法的某些部分,即可得到

  

''不被识别为内部或外部命令

  

系统找不到指定的路径。

多行命令在Windows PowerShell或CMD中也不能很好地工作,因此我不确定它们在哪里输入命令。

有人可以帮助我吗?预先非常感谢。

2 个答案:

答案 0 :(得分:1)

您的问题是为您登录的用户没有正确设置gclouddocker。以下是一个临时解决方案。您应该重新安装docker和cloud SDK。

验证以下路径的两个组件均正确,并根据您的安装进行调整。

打开Windows命令提示符并执行:

set PATH=C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin;C:\Program Files\Docker\Docker\Resources\bin;%PATH%

答案 1 :(得分:0)

找到了一种解决方案:使用管理员帐户登录Windows本身。我的OP中提到的其他修复程序/线程最终都没有意义。

我有一个本地管理员帐户,但是由于该帐户是最近设置的,所以我习惯于登录到我通常的工作帐户(非管理员),并且仅根据需要输入本地管理员凭据(例如,使用提升的特权)。

因此docker和powershell以及cloud SDK都可以使用admin特权单独启动,但是在整个链中的某个地方它都中断了,并且没有任何提示。使用管理员帐户登录可以避免这种情况。