【问题标题】:invalid argument "gcr.io//hello-app:v1" for "-t, --tag" flag: invalid reference format“-t,--tag”标志的无效参数“gcr.io//hello-app:v1”:无效的参考格式
【发布时间】:2019-06-25 21:01:35
【问题描述】:

我正在关注本教程:https://cloud.google.com/kubernetes-engine/docs/tutorials/hello-app 用于 Google Cloud Platform。我正在使用 Google Cloud Shell 命令行。当我走到这一步时: 要构建此应用程序的容器映像并将其标记为上传,请运行以下命令:

docker build -t gcr.io/${PROJECT_ID}/hello-app:v1 .

我收到一个错误:

invalid argument "gcr.io//hello-app:v1" for "-t, --tag" flag: invalid reference format

请记住,我已经有 3 个实例集群(从 Kubernetes Engine 创建)和一个自行创建的 VM 实例,存在于我的 VM 实例中,是根据之前的教程创建的。不确定这是否与错误有关。 提前致谢。

【问题讨论】:

    标签: google-cloud-platform google-kubernetes-engine


    【解决方案1】:

    您错过了设置PROJECT_ID。在链接到它的教程的“开始之前”部分中,您可以运行

    gcloud config set project [PROJECT_ID]
    

    然后在第 1 步中运行

    export PROJECT_ID="$(gcloud config get-value project -q)"
    

    在这两个命令之后,您应该正确设置 shell 变量。

    【讨论】:

    • 谢谢罗伯特。确实,我错过了那一步。愚蠢的错误。再次重新执行所有步骤后,我在同一步骤中遇到了不同的错误 - 构建容器映像:unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /home/hazzaldo2/Dockerfi le: no such file or directory
    • 奇怪。我刚刚在一个新项目中创建了一个全新的云外壳,这些步骤对我来说都很好。唯一看起来很奇怪的是Dockerfi le 中的空格(除非那是一个奇怪地粘贴的换行符)。如果你运行 ls /home/hazzaldo2/Dockerfile 会返回什么?
    • 感谢罗伯特的回复。当我运行ls /home/hazzaldo2/Dockerfile 时,我得到:ls: cannot access '/home/hazzaldo2/Dockerfile': No such file or directory。如果我自己运行ls,我会得到:README-cloudshell.txt。我不确定它是在 GCP 中寻找我的项目中的当前目录,还是在其他地方寻找?如果是这样,如何在 GCP 中访问我的项目中的目录树?
    • 在您git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples 之后,确保您 cd 进入创建的目录,该目录将包含Dockerfile。这是您将用于创建图像的文件。如果您从主目录运行docker build,您将没有 Dockerfile,并且 docker 将不知道您要构建什么。
    • 天哪……我才意识到我哪里出错了。当我从 Github 克隆 kubernetes-engine-samples 项目时,我是在本地机器上而不是在 gcloud shell 上完成的。我本能地这样做了,因为我只是习惯于在我的机器上本地克隆项目。必须在云上做所有事情,包括克隆项目,这对我来说只是一个新概念。对不起..这样一个愚蠢的错误。非常感谢您的帮助。
    【解决方案2】:

    我在运行时也遇到了同样的错误

    docker build -t gcr.io/${PROJECT_ID}/hello-app:v1 .
    

    但将其更改为(我的 PROJECT_ID 是 deepworld123)

    docker build -t gcr.io/deepworld123/hello-app:v1 .
    

    为我修好了。即使我确实设置了 PROJECT_ID=deepworld123。

    【讨论】:

      【解决方案3】:

      您的教程链接不起作用(它是指向 GCP 仪表板的链接,而不是教程),但大概有一个步骤您应该设置 PROJECT_ID 变量,但您跳过了该步骤。错误消息在您的命令中出现${PROJECT_ID} 的两个斜杠之间不显示任何内容。

      【讨论】:

      【解决方案4】:

      遇到了一个非常相似的问题,涉及 PROJECT_ID 未正确设置。解决方案必须按照错误消息所述处理格式化。

      我的PROJECT_ID 字符串具有以下格式companyname.com:companyname-1 在我按照接受的答案中的所有步骤进行操作后,错误消息是相同的。

      原来: 需要替换为/。最终的gcr.io 字符串如下所示:

      gcr.io/companyname.com/companyname-1/hello-app:v1

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-16
        • 2018-01-22
        • 2019-06-27
        • 1970-01-01
        • 1970-01-01
        • 2018-12-31
        • 1970-01-01
        • 2020-06-24
        相关资源
        最近更新 更多