我需要处理存储在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中也不能很好地工作,因此我不确定它们在哪里输入命令。
有人可以帮助我吗?预先非常感谢。
答案 0 :(得分:1)
您的问题是为您登录的用户没有正确设置gcloud
和docker
。以下是一个临时解决方案。您应该重新安装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特权单独启动,但是在整个链中的某个地方它都中断了,并且没有任何提示。使用管理员帐户登录可以避免这种情况。