问题标签 [google-container-registry]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
docker - 如何使用 gcloud 或其他 CLI 在 Google Container Registry 中列出已发布的容器镜像
是否有gcloud
API 或其他命令行界面 (CLI) 可以访问私有 Google Container Registry 中已发布的容器镜像列表?(即 Google Cloud Platform 项目中的容器注册表)
gcloud container
似乎没有帮助:
我也不想gcloud docker
用来列出图像,因为它想连接到我没有的特定 docker 守护进程。除非有办法告诉gcloud docker
连接到远程公共 docker 守护程序,该守护程序可以读取通过我的项目推送到注册表的私有容器。
docker - 如何在 Google 私有 Container Registry 中列出容器映像版本
我可以gcloud docker search gcr.io/my-project
用来列出在my-project
Google 私有容器注册表中发布的图像。
如何查看可用于这些图像的版本?
gcloud docker inspect gcr.io/my-project/gabipetrovay-service
将仅描述已拉出的图像。我想要查看某个镜像在 Container Registry 中发布了哪些版本。
kubernetes - 如何很好地要求 Kubernetes 检索更新的图像?
我有一个新的 Docker 映像,理想情况下,我希望对其进行平滑升级,要么忘记以前部署的版本,要么只保留以前的版本,而不是所有以前部署的版本。
Kubernetes Pods 将在重新启动时检索最新的镜像(如果它被标记为:latest
或imagePullPolicy: Always
.
但是,除非镜像标签发生变化,kubectl apply
否则kubectl replace
不会重启 Pod,因此不会触发拉取最新镜像。标记它意味着一个复杂的脚本总是删除旧的标记图像(没用的人在这里有一个技巧)。
kubectl rolling-update ... --image ...
如果每个 pod 只有一个容器,则可以这样做。
有效且最终干净且始终获得最新的方法是删除命名空间并重新创建所有 pods/rc/services...
即使每个 Pod 有多个容器,我如何才能要求 Kubernetes 很好地使用我的新镜像?
docker - gcloud docker push 可靠性
gcloud docker push
在过去的几周里,我在推送图片时遇到了很多问题。我已经阅读了许多堆栈溢出讨论以及 github 问题和解决方法,但我还没有遇到不一致的解决方案。
通常我会尝试推送一个或两个容器图像。第一次推送几乎总是会失败,并显示以下 retry-until-timeout 输出:
我只能用gcloud auth login
. 最多 5 分钟后,我将尝试推送第二张图像,并再次看到重试直到超时问题。在我gcloud auth login
再次尝试之前,我会在每次尝试中看到这一点。
通常,在实际推送图像之前,我必须在验证后立即手动重试几次。
- 我真的被注销了吗(我仍然可以使用机器访问 pod 和实例等
kubectl
)gcloud
?如果是这样,为什么注销不一致以及构建 docker 容器会做什么会使我的本地 gcloud 会话无效? - 如果不是,为什么我不能
gcloud docker push
在我再次进行身份验证之前?在那之后,为什么这仍然不一致(我怀疑它可能与真正的问题几乎没有关系)。 - 有没有办法使用 docker-machine 和 gcloud docker push 在 OSX 上推送图像可靠?是否有另一种方法可以将图像获取到云存储库(最好从命令行)?
gcloud --version
alpha 2016.01.12
beta 2016.01.12
bq 2.0.18
bq-nix 2.0.18
core 2016.02.11
core-nix 2016.02.05
gcloud
gsutil 4.16
gsutil-nix 4.15
kubectl
kubectl-darwin-x86_64 1.1.7
docker --version
Docker version 1.10.1, build 9e83765
docker-machine --version
docker-machine version 0.6.0, build e27fb87
virtualbox 版本 5.0.14 r105127
docker - Google Container Registry 的 gcloud API 是什么
我必须列出在某个项目中发布的 Docker 容器镜像,但我无法使用gcloud
CLI 工具找到合适的 API。这可能吗?
是否有任何其他解决方案可以在我的 Google 项目中列出此私有容器注册表中的容器映像?
google-cloud-platform - 无法推送到 Google Container Registry - 错误请求
推送到“gcr.io”或“us.gcr.io”时遇到问题:
然而,当我尝试推送到“b.gcr.io”时 - 一切似乎都有效。
我想念什么?
环境:
docker - gcloud docker push 挂起
当我尝试将新的 docker 图像推送到gcr.io
usinggcloud docker push
时,它经常会在停止之前取得一些进展:
推送无限期地保持在这种状态(我已经离开了一个小时,没有一个字节的进展)。如果我 Ctrl-C 终止此进程并重新运行它,它会到达完全相同的点并且再次没有任何进展。
我发现的唯一解决方法是重新启动计算机并重新运行“Docker 快速启动终端”。然后推送成功。
是否有不需要经常重新启动计算机的停滞推送的解决方法?(我在 Mac OS X 上。)
google-kubernetes-engine - 每次重新上传 docker 镜像层
我已经使用谷歌容器注册表几个星期了,有一件事情非常烦人,我无法摆脱:
我有一个 docker 镜像,除了最后一层,它根本没有变化,只有 1MB 定期更新。当我定期将此图像推送到 dockerhub 时,正如预期的那样,它告诉我所有层都已经存在,除了最后一层。
当我推送到谷歌注册表时,它会重新上传所有内容,就像它是一个全新的图像一样。
如果我不为网络流量付费,我不会太介意,但是因为我付费+上传需要很长时间,这是一个已知的错误吗?
google-cloud-platform - 为不会过期的谷歌容器注册表创建图像提取密钥?
我正在尝试让 Kubernetes 从另一个项目的 Google Container Registry 下载图像。根据文档,您应该使用以下方法创建图像拉取机密:
但我想知道我应该使用什么DOCKER_USER
来DOCKER_PASSWORD
使用 Google Container Registry 进行身份验证?查看GCR 文档,它说密码是您可以通过运行获得的访问令牌:
这实际上有效......一段时间。问题似乎是这个访问令牌在(我认为是)一小时后过期。我需要一个在创建图像提取密码时不会过期的密码(或其他密码)。否则 Kubernetes 集群在一个小时左右后无法下载新镜像。这样做的正确方法是什么?
docker - 如何确定特定标签是否可用于图像
我目前正在使用它来检查 gcr.io 上是否有可用的图像。
tags_json=$(curl "https://gcr.io/v2/${repo}/${image}/tags/list" 2>/dev/null)
tags_found="$(echo "${tags_json}" | jq ".tags | indices([\"${version}\"]) | any")"
这是不幸的,因为与那里的一些 LTS 发行版相比,jq
该支持的版本相当新......indices
我可以为 docker.io 解决这个问题,它适用于旧版本jq
:
tags_json=$(curl "https://registry.hub.docker.com/v2/repositories/${repo}/${image}/tags/${version}/" 2>/dev/null)
tags_found="$(echo "${tags_json}" | jq ".v2?")"
有一个更好的方法吗?我看到有人提到 GCR 在典型的 docker 注册表协议之上支持一些扩展。我可以在这里使用的任何东西。