Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 无法在GCP容器注册表中推送映像_Google Cloud Platform - Fatal编程技术网

Google cloud platform 无法在GCP容器注册表中推送映像

Google cloud platform 无法在GCP容器注册表中推送映像,google-cloud-platform,Google Cloud Platform,我将按照本教程设置Kubernetes 我没有使用教程中的hello项目,而是从自己的Docker存储库下载了一个图像。这是卡桑德拉的形象 docker pull manuchadha25/codingjedi:3.11.4 图像可用(在谷歌控制台上检查) 现在我想将图像推送到容器注册中心(我想这是Google自己的注册中心,Kubernetes使用它来创建具有所需图像的新节点)。我在尝试推送图像时遇到此错误 manuchadha25@cloudshell:~ (copper-frame-2

我将按照本教程设置Kubernetes

我没有使用教程中的hello项目,而是从自己的Docker存储库下载了一个图像。这是卡桑德拉的形象

docker pull manuchadha25/codingjedi:3.11.4
图像可用(在谷歌控制台上检查)

现在我想将图像推送到容器注册中心(我想这是Google自己的注册中心,Kubernetes使用它来创建具有所需图像的新节点)。我在尝试推送图像时遇到此错误

manuchadha25@cloudshell:~ (copper-frame-262317)$ docker push gcr.io/${PROJECT_ID}/manuchadha25/cassandra:3.11.4
The push refers to repository [gcr.io/copper-frame-262317/manuchadha25/cassandra]
An image does not exist locally with the tag: gcr.io/copper-frame-262317/manuchadha25/cassandra
manuchadha25@cloudshell:~ (copper-frame-262317)$

我做错了什么?

如果要从GCR加载docker映像,则需要在GCR中添加映像的标记版本

首先通读以下内容:

事情是这样的。如果您只是想运行docker映像,您可以这样做。无需将图像推送到GCR

通过运行
docker pull manuchadha25/cassandra:3.11.4
您从 这个你可以直接运行它。如果你真的需要把你的docker形象放到你项目的GCR中,你必须告诉docker GCR“住在哪里”

这是通过在GCR上标记图像来完成的。GCR的标签有三个不同的部分

|注册表位置|项目ID |图像名称|

|gcr.io${whateveryouridis}卡桑德拉|

因此,在您的情况下,您将运行:

docker标签manuchadha25/cassandra:3.11.4 gcr.io/${whateveryouridis}/cassandra:3.11.4

除此之外:

docker push gcr.io/${whateveryouridis}/cassandra:3.11.4

但我怎么强调都不过分


您可以这样做,但似乎只是想在gck8s中运行docker映像。只要尝试一下docker run manuchadha25/cassandra:3.11.4

如果您想从GCR加载docker图像,您需要在GCR中添加图像的标记版本

首先通读以下内容:

事情是这样的。如果您只是想运行docker映像,您可以这样做。无需将图像推送到GCR

通过运行
docker pull manuchadha25/cassandra:3.11.4
您从 这个你可以直接运行它。如果你真的需要把你的docker形象放到你项目的GCR中,你必须告诉docker GCR“住在哪里”

这是通过在GCR上标记图像来完成的。GCR的标签有三个不同的部分

|注册表位置|项目ID |图像名称|

|gcr.io${whateveryouridis}卡桑德拉|

因此,在您的情况下,您将运行:

docker标签manuchadha25/cassandra:3.11.4 gcr.io/${whateveryouridis}/cassandra:3.11.4

除此之外:

docker push gcr.io/${whateveryouridis}/cassandra:3.11.4

但我怎么强调都不过分


您可以这样做,但似乎只是想在gck8s中运行docker映像。只要试试docker run manuchadha25/cassandra:3.11.4

谢谢你,伙计。如果我想使用GCP/Kubernetes管理集群,我不需要将映像推送到GCR吗。我认为当我在GCP上运行Kubernetes时,由于两者之间的集成,Kubernetes将在gcr.io中搜索图像。我很乐意将图像保存在Docker Hub中,只要稍后Kubernetes能够找到它并使用它来创建和扩展集群(它就是这样工作的)?如果您的映像在公共docker hub中可用,则无需将映像推送到GCR。如果您在封闭环境中工作,例如在创建封闭源映像的公司中工作,则可能更需要将映像推送到GCR。您甚至可以运行一个混合环境,向gcr提供您自己的封闭源代码映像,gcr本身需要一些依赖项(例如一些DB)。您可以通过docker hub中的官方映像提供依赖关系。图像名称只需要包含容器注册表地址,我就知道了。如果我使用的是docker注册表,那么我指定kubectl创建部署我的cassandra应用程序--image=docker.io/manuchadha25/cassandra:3.11.4对我来说似乎是正确的。下一步是将其打包到values.yaml文件中,您可以通过kubectl应用该文件,并根据需要更改图像位置。对于相当复杂的部署场景,可通过ci/cd和helm或k8s操作员实现自动化。但这就是路的尽头:)谢谢你,伙计。如果我想使用GCP/Kubernetes管理集群,我不需要将映像推送到GCR吗。我认为当我在GCP上运行Kubernetes时,由于两者之间的集成,Kubernetes将在gcr.io中搜索图像。我很乐意将图像保存在Docker Hub中,只要稍后Kubernetes能够找到它并使用它来创建和扩展集群(它就是这样工作的)?如果您的映像在公共docker hub中可用,则无需将映像推送到GCR。如果您在封闭环境中工作,例如在创建封闭源映像的公司中工作,则可能更需要将映像推送到GCR。您甚至可以运行一个混合环境,向gcr提供您自己的封闭源代码映像,gcr本身需要一些依赖项(例如一些DB)。您可以通过docker hub中的官方映像提供依赖关系。图像名称只需要包含容器注册表地址,我就知道了。如果我使用的是docker注册表,那么我指定kubectl创建部署我的cassandra应用程序--image=docker.io/manuchadha25/cassandra:3.11.4对我来说似乎是正确的。下一步是将其打包到values.yaml文件中,您可以通过kubectl应用该文件,并根据需要更改图像位置。对于相当复杂的部署场景,可通过ci/cd和helm或k8s操作员实现自动化。但这就是路的尽头:)
manuchadha25@cloudshell:~ (copper-frame-262317)$ docker push gcr.io/${PROJECT_ID}/manuchadha25/cassandra:3.11.4
The push refers to repository [gcr.io/copper-frame-262317/manuchadha25/cassandra]
An image does not exist locally with the tag: gcr.io/copper-frame-262317/manuchadha25/cassandra
manuchadha25@cloudshell:~ (copper-frame-262317)$