golang 上传离线tar/gz镜像文件至Harbor仓库

hello,今天和大家分享个小工具 (^_^)

在实际业务场景中,通常我们提交docker镜像,通过 docker push 命令来发布至远程仓库中,但这种方式需要本地环境中存在要发布的镜像文件,比如 alpine:3.8 我要提交 docker push 仓库名称/alpine:3.8。

如果有较多镜像已经通过 docker save 方式另存到了另外的文件系统中, 我们要把这些镜像发布到远程仓库中,那发布的过程是非常的繁琐。

针对这个业务场景,Fork了 silenceper/docker-tar-push 项目,二次研发后将我们业务需求实现。 有这种需求的小伙伴,欢迎用起来呀~~

docker-tar-push github仓库地址:github.com/hltfaith/do...

docker-tar-push命令下载地址:github.com/hltfaith/do...

功能

  • 支持gz格式的image
  • 支持对image增加前缀repo
  • 支持上传harbor

使用

shell 复制代码
$ docker-tar-push -h
push your docker tar archive image without docker.

Usage:
  docker-tar-push [flags]

Flags:
  -h, --help                  help for docker-tar-push
      --image-prefix string   add image repo prefix
      --log-level int         log-level, 0:Fatal,1:Error,2:Warn,3:Info,4:Debug (default 3)
      --password string       registry auth password
      --registry string       registry url
      --skip-ssl-verify       skip ssl verify
      --username string       registry auth username

用法一

shell 复制代码
docker-tar-push alpine:latest --registry=http://localhost:5000

用法二

例如将 docker save python:3.0 > python-3.10.tar 镜像文件推送harbor仓库, 这时需要存放至 harbor仓库 library 项目中,使用下面参数 --image-prefix=library/ 即可。

shell 复制代码
docker-tar-push /镜像目录路径 --registry=http://harbor.harbor.svc --username=admin --password=Harbor12345 --image-prefix=library/

当我们从仓库下载镜像时,它的完整名称为: docker pull harbor.harbor.svc/library/python:3.0

编译

shell 复制代码
go build -o bin/docker-tar-push cmd/docker-tar-push/main.go

技术文章持续更新,请大家多多关注呀~~

搜索微信公众号,关注我【 帽儿山的枪手 】

相关推荐
java_logo14 分钟前
Docker 部署 Halo:轻松搭建开源个人博客
docker·容器·开源·博客·开源博客·halo·轩辕镜像
Linux实战笔记35 分钟前
Docker多阶段构建优化生产配置手记:镜像瘦身最佳实践
ci/cd·docker·生产环境·多阶段构建·镜像瘦身
誰能久伴不乏38 分钟前
QT工业上位机一次「指令静默丢失」的排查
qt·docker·github
TTATTC1 小时前
定时增量每 5 秒全表扫一遍?我用 DBSyncer 跑了三组对照实验才找到原因
docker·开源
TTATTC1 小时前
42 个 OpenClaw 落地案例按权限分五档:先从哪一档搭起最不容易翻车
docker·开源
william_yangshun1 小时前
【AI实战】rakazo中文版使用教程:3869星开源AI agent,Docker一条命令跑起来
人工智能·docker·开源
colinu1 小时前
Docker 容器端口未发布问题快速排查文档
运维·docker·容器
不停喝水1 小时前
【前端转全栈java速通课】 项目实战④12-14节 拦截器过滤器和全局配置-cors跨域设置-token体系-利用session做验证码
java·开发语言·前端·ai·容器
我的div丢了肿么办2 小时前
go语言通过反射来操作结构体中的数据
后端·go
人人都是软件工程师2 小时前
16-并发编程(下):channel、select 与同步原语
go