👨🏻🎓博主介绍:大家好!我是李大白,一名运维容器运维工程师,热爱分享知识🌟
🌈擅长领域:云原生、数据库、自动化运维
🙏🏻如果本文章对小伙伴们有帮助的话,🍭关注+👍🏻点赞+🗣评论+📦收藏!
🤝如果在文章描述时如有错,恳请各位大佬指正,在此感谢!!!
🍂 落叶而知秋,博闻而强识!
📕 精品专栏:Harbor大白话(企业级)
目录
- 应用场景
- 注册dockerhub账号
- 命令行登录Dockerhub
- 上传镜像到DockerHub
- 在Harbor新建目标
- 新建复制规则
- 执行复制
- 查看迁移详细结果
- 查看迁移后的项目
- 推荐阅读
应用场景
公司之前使用的是dockerhub作为镜像仓库,因业务发展需要,公司搭建了自己的harbor私有镜像仓库。之前存储在dockerhub上的镜像需要迁移到harbor中。
本篇文章以Harbor 2.3.5版本为演示环境,从”0“到”1“对整个迁移过程进行详细的操作和演示。
注册dockerhub账号
注册地址:https://hub.docker.com/
注册过程就不用我教了吧!
命令行登录Dockerhub
在命令行登录dockerub,
[root@lidabai harbor]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: lidabai66
Password:
Error response from daemon: Get https://registry-1.docker.io/v2/: unauthorized: incorrect username or password
原因:用户名/密码错误
[root@lidabai harbor]# docker login -u lidabai66
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
上传镜像到DockerHub
🐖:无需在dockerhub上创建项目。
[root@lidabai ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis alpine3.15 8a0942cae737 10 days ago 36.5MB
[root@lidabai ~]# docker tag redis:alpine3.15 lidabai66/redis:alpine3.15 #给本地镜像打标签
[root@lidabai ~]# docker push lidabai66/redis:alpine3.15 #将打好标签的镜像push到dockerhub
The push refers to repository [docker.io/lidabai66/redis]
a34a517cda84: Mounted from library/redis
c6ce8825d70e: Mounted from library/redis
3f9c5053c2fe: Mounted from library/redis
af824220a3a6: Pushed
dc57052270aa: Mounted from library/redis
4fc242d58285: Mounted from library/redis
alpine3.15: digest: sha256:a22bc2d15940ae67680611827b3e9b69150d7c11c063415c3775c35d163bb555 size: 1571
然后在dockerhub上可以看到已经上传成功:
在Harbor新建目标
在harbor UI管理界面执行操作:
【系统管理】——>【仓库管理】——>【新建目标】——>【填写提供者(Docker Hub】——>【测试连接】——>【确定】
提供者:Docker Hub;
目标名:在DockerHub上注册的用户名;
目标URL:选择”提供者“后会默认填充;
访问ID:dockerhub注册的用户名,如果迁移的是dockerhub中的公有镜像,可不用填写”访问ID“
访问密码:dokcerhub用户的密码
验证远程证书: 自己手动生成的证书不可以勾选;
信息填写完成后点击”测试连接“,如果连接测试失败请检查用户名和密码是否正确。
新建复制规则
在创建复制策略时,如果想要拉取Docker Hub的官方镜像,比如hello-world、busybox等,则需要在源资源过滤器的名称过滤器中加上“library”前缀,如“library/hello-world”“library/busybox”“library/**”等。
如果名称过滤器为空或者被设置为“**”,而其他过滤器都保持默认值,则此复制策略将会拉取认证账户名下的所有镜像。
【触发模式】
手动:手动完成镜像的”复制/迁移“
定时:以计划任务的方式定时将dockerhub中的镜像迁移到Harbor
事件驱动:即触发,当新上传镜像到dockerHub中就会将该镜像复制到Harbor,可以为”增量模式“;
【资源过滤器】
如果dockerhub中的某些镜像不想迁移到Harbor,可在此填写相应的信息来实现不复制某些镜像。
在harbor UI管理界面执行操作:
【系统管理】-【复制管理】-【新建规则】-【
执行复制
在新建复制规则成功后,即可“手动”执行复制操作将dockerHub上的镜像复制到Harbor。
操作步骤:
选择创建的”复制规则“—>点击“复制”
然后点击【复制】进行确认:
观察【成功百分比】为100%表示全部迁移成功:
查看迁移详细结果
点击复制任务下的【ID】值可查看该复制任务的详细信息:
查看迁移后的项目
在【项目】处可以看到刚才迁移到Harbor的镜像,迁移过程会自动在Harbor创建一个项目来存放迁移后的镜像:
推荐阅读
shell中获取Harbor中所有的镜像列表(超实用,建议收藏)
k8s节点如何从Harbor中拉取镜像的?镜像拉取凭证的配置
Harbor镜像仓库漏洞扫描_如何检测你的镜像是否安全?
Prometheus监控Harbor实战(全网首发)
Harbor UI无法登录问题复现,原因令我匪夷所思
Helm部署Harbor,实现高可用的镜像仓库(超详细分享)~后附踩坑记录
如何维护好公司的Harbor服务,看完这篇小白也会维护Harbor了!
【Harbor故障排查篇】docker login连接被拒绝
shell中获取Harbor中所有的镜像列表(超实用,建议收藏)
Harbor高可用设计,使用外部数据库-详细到爆的操作步骤
担心Harbor数据丢失?谈谈Harbor的备份和恢复方法。