docker-harbor私有仓库

2023-12-14 15:55:01

docker-harbor私有仓库
docker 镜像 容器 仓库
仓库:保存镜像
私有,自定义用户的形式登录仓库,拉取或者上传镜像。(内部管理的用户)
harbor:是VMware公司开发的,开源的企业级的docker registry项目。
帮助用户快速的搭建一个企业级的docker 仓库的服务。
支持中文。

harbor的特性:

1、基于角色进行控制,用户和仓库都是基于项目进行的,用户在每个项目中可以拥有不同的权限
2、基于镜像,在不同的harbor实例之间进行复制。
3、harbor自带一个数据库,AD/LDAP(类似于数据库中的表),对已经存在的用户进行认证和管理。
4、镜像删除和垃圾回收,仓库中的镜像可以被删除(基于权限控制的),也可以回收镜像占用的空间
5、图形化界面的,用户可以直接通过浏览器来对镜像仓库进行管理。
6、审计管理,所有对镜像仓库的操作都可以被记录溯源。
7、支持APl操作,API的程序接口,端口是主机和主机之间的通信,而API是应用和应用之间直接的接口。可以基于API调用接口集成更多程序。

harbor的组件:

1、proxy:安装完了harbor之后,他会自动生成一个nginx的容器,自动对外映射,80端口,nginx前端代理,在HARBOr当中registry,UJ,TOKEN,都在nginx的反向代理后面。通过nginx的代理,可以把请求转发到后端不同的应用。
2、Registry:负责存储镜像,docker pull/push的命令都由其负责。用户进行访问控制,不同的用户对docker镜像有不同的读写权限。Resgistry每次都会指向一个不同的Token,强制用户每次的pull/push,都必须带一个合法的token(公钥对),Resgistry会通过公钥对,进行解密验证,身份合法才能指定操作。
3、CORE SERVICES:Harbor的核心功能:提供3个服务:
? ? ? ?1、UI:提供图形化界面。
? ? ? ?2、Webhook:仓库上所有镜像的变化(增删改),都会传送给webhook,以实现在?
? ? ? ?Ul界面上。
? ? ? ?3、Token:签发每一次push和pull的公钥对,用来和仓库之间进行权限认证。

? ? ? ?4、database:harbor-db,为核心core services提供数据库存储服务,用户权限,审计日志? ? ? ? ? ? ? ? ?docker镜像的分组和项目信息。
? ? ? ?5、Job service:主要用于镜像的复制,本地镜像可以同步到远程harbor上
? ? ? ?6、log collector(harbor-log):统一日志收集工具。
?harbor都是基于docker容器化部署的,docker-compose一键编排,安装。

Harbor 部署?

[root@localhost ~]# cd /opt
[root@localhost opt]# rz -E
rz waiting to receive.
[root@localhost opt]# rz -E
rz waiting to receive.
[root@localhost opt]# ls
containerd ?docker-compose-linux-x86_64 ?harbor-offline-installer-v2.8.1.tgz ?rh

mv docker-compose-linux-x86_64 docker-compose
mv docker-compose /usr/local/bin/
chmod 777 /usr/local/bin/docker-compose
?docker-compose -v
Docker Compose version v2.18.0

tar -xf harbor-offline-installer-v2.8.1.tgz -C /usr/local
[root@localhost opt]# cd /usr/local/harbor/
[root@localhost harbor]# ls
common.sh ?harbor.v2.8.1.tar.gz ?harbor.yml.tmpl ?install.sh ?LICENSE ?prepare
[root@localhost harbor]# cp harbor.yml.tmpl harbor.yml
[root@localhost harbor]# vim harbor.yml

--5行--修改,设置为Harbor服务器的IP地址或者域名

hostname = 192.168.73.107

--12~18行未注释的注释

--34行--指定管理员的初始密码,默认的用户名/密码是admin/Harbor12345

harbor_admin_password = Harbor12345

--53镜像保存位置

修改完成

./prepare

./install.sh

cd /usr/local/harbor/
docker-compose ps
?
##以下命令均在在habor的配置目录下运行
docker-compose up -d ? ? ?#启动
docker-compose stop ? ? ? #停止
docker-compose restart ? ?#重新启动

在浏览器登录你的host,默认的用户名/密码是admin/Harbor12345

上传镜像到docker-harbor仓库:

docker pull nginx:1.22.0

docker login -u admin -p Harbor12345?http://127.0.0.1

docker tag nginx:1.22.0 127.0.0.1/library/nginx:test1

docker push 127.0.0.1/library/nginx:test1

创建用户并分配权限

?在 Web 管理界面中单击系统管理 -> 用户管理 -> +用户,
填写用户名为“zhangsan”,邮箱为“zhangsan@kgc.com”,全名为“zhangsan”,密码为“As12345678”,注释为“xx项目角色”(可省略)。
附:用户创建成功后,单击左侧“...”按钮可将上述创建的用户设置为管理员角色或进行删除操作,

添加项目成员

?单击项目 -> myproject-test-> 成员 -> + 成员,填写上述创建的用户 zhangsan 并分配角色为“开发人员”。
附:此时单击左侧“...”按钮仍然可对成员角色进行变更或者删除操作

在客户端上使用普通账户操作镜像?


//删除上述打标签的本地镜像
docker rmi 192.168.73.107/myproject-test/cirros:v2
?
//先退出当前用户,然后使用上述创建的账户 zhangsan 登录
docker logout 192.168.73.107
?
docker login 192.168.73.105

docker login -u zhangsan -p As12345678 http://192.168.73.107
?
//下载和上传镜像进行测试
docker pull 192.168.73.107/myproject-test/cirros:v2
?
docker tag cirros:latest 192.168.73.107/myproject-test/cirros:v3
docker push 192.168.73.107/myproject-test/cirros:v3

移除 Harbor 服务容器同时保留镜像数据/数据库,并进行迁移?


//在Harbor服务器上操作
(1)移除 Harbor 服务容器
cd /usr/local/harbor
docker-compose down -v
?
(2)把项目中的镜像数据进行打包
//持久数据,如镜像,数据库等在宿主机的/data/目录下,日志在宿主机的/var/log/Harbor/目录下
ls /data/registry/docker/registry/v2/repositories/myproject-kgc
cd /data/registry/docker/registry/v2/repositories/myproject-kgc
tar zcvf kgc-registry.tar.gz ./*
?
6. 如需重新部署,需要移除 Harbor 服务容器全部数据
cd /usr/local/harbor
docker-compose down -v
rm -r /data/database
rm -r /data/registry

Harbor的备用机的设置

再次开启一台主机,按照前面的步骤安装一台Harbor服务器?

(1)添加复制对象?

服务端(要复制的主机):登录Harbor管理员

复制管理=》目标=》+目标=》目标填写

输入对方主机的用户名和密码,URL? 等待,进行测试连接,如果没问题就可以确定

(2)进行项目的选择复制?

?服务端中:

项目=》点击要复制的项目名=》复制 =》 +复制规则

编写好复制规则,进行测试连接,如果无误,就可以确认

查看备份机中的项目

文章来源:https://blog.csdn.net/abc13245821907/article/details/134986391
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。