Google云运行不支持docker注册表,因此我必须手动拉出图像,对其进行标记并将其推送到GCR。
容器图片网址应与[region。] gcr.io/repo-path [:tag或@digest]模式匹配
有没有更简单的方法来做到这一点?
答案 0 :(得分:4)
不幸的是,这是将Docker映像从一个容器注册表移至另一个容器注册表的最简单方法。
仅出于文档目的,我将添加以下步骤以使社区受益:
docker pull [REPOSITORY-NAME] / [IMAGE]:[TAG]
docker标签[IMAGE] gcr.io/[PROJECT-ID] / [IMAGE]
docker push gcr.io/[PROJECT-ID] / [IMAGE]
答案 1 :(得分:0)
在任何情况下,恐怕“简单”都不是问题。不过,您可以尝试使用Docker web hooks调用简单的Cloud函数(拉,标记,推),以使图像在GCR中保持同步。
似乎有一些项目可以解决类似dregsy这样的麻烦,但是我没有尝试过...
答案 2 :(得分:0)
我一直在开发一些名为 regclient 的工具来支持此用例。对于复制单个图像,命令是:
regctl image copy ${source} ${target}
例如
regctl image copy ubuntu:latest gcr.io/your-project/ubuntu:latest
这会在使用 HEAD 请求复制之前检查摘要,以允许频繁运行命令,但仅在上游映像与 GCR 上的内容不匹配时才使用您的配额。它还复制使用 docker pull
和 docker push
无法获得的多平台图像(docker 在拉取时将图像取消引用到您的平台)。与 docker pull
不同的是,单个层仅在目标注册表中不存在时才被复制。
如果您有大量图像要连续镜像,还有一个 regsync
命令可根据包含图像列表、标签和运行副本的计划的 yaml 文件进行复制。
这些可以作为容器运行,但它们也可以作为不需要 docker 运行的独立二进制文件。