【问题标题】:Use short lived token to push docker image to GCP使用短期令牌将 docker 镜像推送到 GCP
【发布时间】:2018-12-18 10:51:47
【问题描述】:

我的进程中有一个服务帐户和密钥 json 文件内容。尝试生成“docker gcr.io/my-project/my-image”以将图像上传到容器注册表。

我从Advanced Authentication tutorial尝试了docker login -u _json_key -p "$(cat keyfile.json)" https://[HOSTNAME],登录时返回成功,但docker push仍然返回错误:

You do not currently have an active account selected.
Please run:

  $ gcloud auth login

理想情况下,我想在不配置 gcloud SDK 的情况下触发 docker push。也不想将关键的 json 内容存储到文件中。我想把它保存在进程内存中。

【问题讨论】:

    标签: json docker authentication google-cloud-platform google-kubernetes-engine


    【解决方案1】:

    为 18.03 及更高版本的 docker 客户端运行的正确命令是 gcloud auth configure-docker

    如果您阅读了命令docker login -u _json_key -p "$(cat keyfile.json)" https://[HOSTNAME] 的细则,它会提到for older Docker clients,例如几岁。这不是今天运行的正确命令。

    随着不断改进、新功能、Kubernetes 等,您不想运行旧命令或配置。

    gcloud auth configure-docker

    【讨论】:

    • 这是一个很好的开始!!所以看起来使用 gcloud sdk 是不可避免的。那么在不将密钥 json 存储到文件的情况下,对 fcloud sdk 进行身份验证的最佳方法是什么?
    • 为了什么目的?你的问题是关于码头工人的。从 18.03 开始​​,您不再使用 gcloud 命令,而是使用 docker 命令。 Google 支持两种类型的 gcloud 凭据(用户凭据和服务帐户凭据)。对于用户凭据,请使用 gcloud auth login。对于服务帐户凭据,请阅读我写的这篇文章:jhanley.com/…
    • 我有一个获取 key-json 内容的程序,需要发出 docker push 命令。我可以使用 'gcloud auth activate-service-account --key-file ' 命令进行身份验证,但会尽量避免这样做,因为这需要将密钥文件存储在文件系统中。有什么方法可以在不读取密钥文件的情况下实现相同的目标?
    • 您认为为什么需要使用gcloud 的服务帐户?正确设置gcloud gcloud auth login。然后正确设置dockergcloud auth configure-docker
    • 我不确定您是在阅读原始问题还是我的回答。我正在尝试执行编排,因此不能使用 gcloud auth login 登录
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-06
    • 2020-02-13
    相关资源
    最近更新 更多