是否有正确的方法使用jfrog CLI从Artifactory下载容器映像以进行docker pull?

时间:2020-06-25 14:55:06

标签: docker artifactory jfrog-cli

我正在尝试在Artifactory实例之间转移容器。表演:

jfrog rt dl my-images-repo repository/ --url="http://localhost/artifactory" --user=user --password=pass --recursive

然后:

jfrog rt u repository/ new-images-repo --url="http://localhost/artifactory" --user=user --password=pass --flat=false

最后:

docker pull new-images-repo/my-image

产量: 缺少签名密钥

但是,通过GUI进行相同的过程,然后导出文件夹,然后重新导入,似乎可以很好地转移容器。对此进行调查,当我运行这些jfrog rt u / dl命令时,似乎没有下载/上传容器的“属性”文件。

有人有主意吗?

谢谢

2 个答案:

答案 0 :(得分:0)

如果您拥有Artifactory Pro(或SaaS,Enterprise,E +),则可以使用Repository Replication来实现将图像Docker从一个实例传输到另一个实例

另一个问题是我们正在使用jfrog rt dljfrog rt u,它们都是通用的上载/下载命令,也许可以用于其他回购类型。

Docker具有特定的API,因此您将需要使用Docker客户端或JFrog CLI的推/拉。

通常,您要做的是:

docker pull SOURCE_IMAGE[:TAG]

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

docker push TARGET_IMAGE[:TAG]

最后还有system/repository export/import可以满足您的需求。

答案 1 :(得分:0)

如果您没有带复制功能的Artifactory pro,您还有2种选择。

在目标Artifactory上,您可以使用将连接到源Artifactory存储库的docker远程存储库。 通过在此远程存储库上运行docker pull命令,您将填充目标Artifactory的本地缓存,使其在本地可用。

可选地,您随后可以运行提升REST API端点,以将映像从缓存移至本地存储库。 https://www.jfrog.com/confluence/display/JFROG/Artifactory+REST+API#ArtifactoryRESTAPI-PromoteDockerImage

第二种方法,如果要使用cli,则将其用作docker客户端的包装(与Angellio方法非常相似,但利用cli进行身份验证)

https://www.jfrog.com/confluence/display/CLI/CLI+for+JFrog+Artifactory#CLIforJFrogArtifactory-BuildingDockerImages

命令应该是

jfrog rt dpl ...

docker tag

jfrog rt dp ...

请注意,主要区别之一是跳数,第一种方法是图像只有一个“运动”,可能要结合您想要的图像数量/体积一起考虑转移,以及您希望如何进行转移。