如何手动将本地构建的Docker镜像上传至Artifactory
手动上传Docker镜像到JFrog Artifactory的方法
由于你无法使用docker push或CI/CD流程,以下是两种手动上传Docker镜像到Artifactory的可行方法:
方法一:通过Artifactory Web UI上传
1. 导出本地镜像为tar归档
用docker save将镜像打包成tar文件:
docker save -o my-image.tar my-image:v1.0.0
替换my-image.tar为自定义归档文件名,my-image:v1.0.0是你本地要上传的镜像名和标签。
2. 在Artifactory UI完成上传
- 登录Artifactory控制台,进入你的本地Docker仓库(确认仓库类型为Docker且拥有上传权限)。
- 点击页面右上角的
Upload按钮。 - 在上传配置中:
- 点击
Select Files选择刚才生成的tar文件; - 在
Target Path中填写镜像在仓库中的路径,格式为<仓库key>/<镜像名>/<标签>(例如你的仓库key是docker-local,则填docker-local/my-image/v1.0.0); - 勾选
Extract Archive选项,让Artifactory自动解压tar包并解析Docker镜像结构;
- 点击
- 点击
Upload完成操作。
3. 验证上传结果
上传完成后,回到仓库界面可看到镜像的manifest.json、layer等文件结构。用docker pull测试拉取:
docker pull <artifactory域名>/<仓库key>/my-image:v1.0.0
方法二:通过Artifactory API上传(命令行方式)
1. 导出并解压镜像(可选)
创建临时目录并解压tar包,方便单独上传每个镜像文件:
mkdir temp-image && docker save my-image:v1.0.0 | tar -C temp-image -xvf -
解压后目录会包含镜像的manifest、layer哈希文件夹等内容。
2. 使用curl上传镜像文件
先在Artifactory个人设置中生成API密钥,然后依次上传必要文件:
- 上传manifest.json:
curl -u <用户名>:<API密钥> -X PUT "<artifactory地址>/artifactory/<仓库key>/my-image/v1.0.0/manifest.json" -T temp-image/manifest.json
- 上传每个layer文件(替换
<layer哈希值>为实际文件夹名):
curl -u <用户名>:<API密钥> -X PUT "<artifactory地址>/artifactory/<仓库key>/my-image/v1.0.0/<layer哈希值>/layer.tar" -T temp-image/<layer哈希值>/layer.tar
3. 验证上传
同样用docker pull命令测试镜像是否能正常拉取。
注意事项
- 确保目标仓库是本地Docker仓库,远程仓库通常不支持直接上传本地镜像;
- 上传路径必须严格符合Docker镜像的层级结构,否则Artifactory无法识别为有效镜像;
- UI上传时必须勾选
Extract Archive,否则仅会上传tar文件,不会解析为镜像。
内容的提问来源于stack exchange,提问作者Andreas H.
相关产品推荐
相关产品推荐

