【问题标题】:Is it possible to load and save Docker images directly from Artifactory?是否可以直接从 Artifactory 加载和保存 Docker 图像?
【发布时间】:2020-04-08 03:05:46
【问题描述】:

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

有一个包含以下步骤的发布流程:

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

有一个由以下步骤组成的部署过程:

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

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

【问题讨论】:

  • 看起来您并没有触摸图像本身,只是在玩弄回购地址和标签名称。你检查过神器的文档jfrog.com/confluence/display/RTF/Docker+Registry 吗?有很多功能可以处理它。特别是如果它是 2 个工件服务器。例如复制、推广等
  • 正确,图像正在导出和导入,并带有一些重新标记。两个 Artifactory 实例未连接,因此无法使用 Artifactory 提供的提升和复制功能。

标签: docker artifactory docker-registry


【解决方案1】:

一个可行的解决方案是使用skopeo,这是一个用于处理远程图像注册表的 CLI 工具。

环境X中的图片直接保存到磁盘,使用如下命令:

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

环境Y中的图片文件直接上传到Artifactory,命令如下:

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

图像不需要显式重新标记以更改存储库前缀。

【讨论】:

    猜你喜欢
    • 2022-09-23
    • 1970-01-01
    • 2022-01-09
    • 2021-11-04
    • 2014-04-03
    • 2013-10-10
    • 2017-11-25
    • 2013-08-30
    • 1970-01-01
    相关资源
    最近更新 更多