docker - 无法从 Container Optimized Compute Engine 的私有(private) GCR 中提取镜像

标签 docker google-compute-engine google-container-registry

无法理解我做错了什么......

在基于容器优化操作系统的新计算引擎实例上执行后续步骤:

  • docker-credential-gcr configure-docker
  • sudo docker run --detach --name=echo --net=esp_net gcr.io/around-dev/firebase-service-image:latest

  • 并得到以下信息:

    Unable to find image 'gcr.io/around-dev/firebase-service-image:latest' locally Pulling repository gcr.io/around-dev/firebase-service-image docker: unauthorized: authentication required. See 'docker run --help'.



    然后实际尝试使用 docker-credential-gcr gcr-login 登录并运行,但仍然出现相同的错误。
    毕竟我的 .docker/.config.json 看起来像:
     {
            "auths": {},
            "credHelpers": {
                    "asia.gcr.io": "gcr",
                    "eu.gcr.io": "gcr",
                    "gcr.io": "gcr",
                    "staging-k8s.gcr.io": "gcr",
                    "us.gcr.io": "gcr"
            }
    

    显然没有存储凭据。有人可以向我解释我做错了什么吗?
    提前致谢。

    最佳答案

    为什么你会看到这个

    您看到此错误是因为您运行了 docker-credential-gcr configure-docker没有 sudo然后 sudo docker run ... .运行时sudo docker , 它在 /root/.docker/ 中查找配置文件并没有找到任何东西,因此抛出 authentication required错误。

    为什么要运行 sudo docker-credential-gcr configure-docker不会修复它

    当您运行 COS 时,您没有对所有目录的写入权限。只有少数目录是可写的,/root不是其中之一。因此,运行 docker-credential-gcr作为 root 失败,因为它无法在 $HOME 中写入 docker 配置文件目录(恰好是 /root )。

    有关可写目录的更多详细信息:https://cloud.google.com/container-optimized-os/docs/concepts/security#filesystem

    修复它

    1 - 覆盖 $HOME
    sudo HOME=/home/root /usr/bin/docker-credential-gcr configure-dockersudo HOME=/home/root docker run --detach --name=echo --net=esp_net gcr.io/around-dev/firebase-service-image:latest
    2 - 手动指定配置文件位置

    您还可以在每个命令中包含 docker config 目录的路径。例如,如果您知道 docker 配置了 /home/root/.docker 中的凭据。目录,您可以运行以下命令:sudo docker --config /home/root/.docker pull gcr.io/my-project/alpine:3.2

    关于docker - 无法从 Container Optimized Compute Engine 的私有(private) GCR 中提取镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51236449/

    相关文章:

    docker - 无法将GCR图像作为同一存储库中的另一个图像名称推送

    docker - Docker是否包含Heardbleed漏洞?

    docker - Rails与Docker-compose:如何设置数据库主机

    selenium - 是否可以使用谷歌计算引擎运行 Selenium 脚本?

    java - Google Cloud 公共(public)主机名

    kubernetes - 如何在 Windows 上(即在 PowerShell 中,而不是 Bash 中)为 Google Cloud Platform 添加 docker-registry secret?

    docker - 微服务jwt身份验证Asp.net核心3

    linux - tensorflow docker gpu 图像未检测到我的 GPU

    google-compute-engine - 将谷歌云快照分享给其他用户

    kubernetes - 自动缩放需要更多时间来启动新的 pod 并在谷歌容器引擎中出现连接错误