是否可以直接从Artifactory加载和保存Docker镜像?



我有两个环境X和Y,它们没有以任何方式连接。环境 Y 是气隙。

有一个发布过程,包括以下步骤:

  1. 为所有已发布的 Docker 映像运行docker pull。图像来自Artifactory X。
  2. 从所有映像中重新标记和去除存储库前缀。
  3. 对所有已发布的 Docker 映像运行docker save。这可能会导致一个或多个 tar.gz 映像包存储在外部驱动器上。

部署过程包括以下步骤:

  1. 对外部驱动器上的所有映像包运行docker load
  2. 重新标记所有映像并添加新的存储库前缀。
  3. 对所有映像运行docker push。图像被推送到工件 Y。

我想知道是否有可能通过直接从Artifactory X获取Docker映像并将其存储为文件来简化此过程,而无需Docker守护程序,并且 - 再次没有Docker守护程序 - 直接将Docker映像文件上传到Artifactory Y?

一种有效的解决方案是使用 skopeo,这是一种用于处理远程映像注册表的 CLI 工具。

使用以下命令将环境 X 中的映像直接保存到磁盘:

skopeo copy 
docker://docker.artifactory-x.example.com/busybox:latest 
docker-archive:./busybox:latest.tar

环境 Y 中的镜像文件使用以下命令直接上传到工件工厂:

skopeo copy 
--dest-creds myusername:mypassword 
docker-archive:./busybox:latest.tar 
docker://docker.artifactory-y.example.com/busybox:latest

无需显式重新标记映像即可更改存储库前缀。

最新更新