docker-harbor私有仓库
docker 镜像 容器 仓库
仓库:保存镜像
私有,自定义用户的形式登录仓库,拉取或者上传镜像。(内部管理的用户)
harbor:是VMware公司开发的,开源的企业级的docker registry项目。
帮助用户快速的搭建一个企业级的docker 仓库的服务。
支持中文。
1、基于角色进行控制,用户和仓库都是基于项目进行的,用户在每个项目中可以拥有不同的权限
2、基于镜像,在不同的harbor实例之间进行复制。
3、harbor自带一个数据库,AD/LDAP(类似于数据库中的表),对已经存在的用户进行认证和管理。
4、镜像删除和垃圾回收,仓库中的镜像可以被删除(基于权限控制的),也可以回收镜像占用的空间
5、图形化界面的,用户可以直接通过浏览器来对镜像仓库进行管理。
6、审计管理,所有对镜像仓库的操作都可以被记录溯源。
7、支持APl操作,API的程序接口,端口是主机和主机之间的通信,而API是应用和应用之间直接的接口。可以基于API调用接口集成更多程序。
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一键编排,安装。
[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 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”,邮箱为“[email protected]”,全名为“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服务器上操作
(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管理员
复制管理=》目标=》+目标=》目标填写
输入对方主机的用户名和密码,URL 等待,进行测试连接,如果没问题就可以确定
服务端中:
项目=》点击要复制的项目名=》复制 =》 +复制规则
编写好复制规则,进行测试连接,如果无误,就可以确认
查看备份机中的项目