1、仓库的作用:保存镜像
2、私有仓库:自定义用户的形式登录仓库,拉取或者上传镜像(内部管理的用户)
3、harbor:VMware公司开发的、开源的、企业级的docker registry项目
(1)目的:帮助用户快速的搭建一个企业级的docker仓库的服务
(2)支持中文
4、docker-harbor的特性
(1)基于角色进行控制,用户和仓库都是基于项目进行的,用户在每个项目中可以拥有不同的权限
(2)基于镜像在不同的harbor实例之间进行复制
(3)harbor自带一个数据库(AD/LDAP,类似于数据库中的表,用于对已存在的用户进行认证和管理)
(4)镜像删除和垃圾回收,仓库中的镜像可以被删除(基于权限控制),也可以回收镜像占用的空间
(5)图形化界面,用户可以直接通过浏览器来对镜像仓库进行管理
(6)审计管理,所有对镜像仓库的操作都可以被记录溯源
(7)支持API操作
①API是程序接口,端口是基于主机和主机之间的通信,API是应用和应用之间的接口,管理员可以基于API调用接口和更多的其他程序进行集成
5、harbor的组件
(1)proxy:安装完了harbor之后,会自动生成一个nginx的容器,自动对外映射,80端口(nginx作为前端代理)。在harbor当中registry(仓库)、UI、TOKEN都在nginx的反向代理后面,通过nginx的代理可以把请求转发到后端不同的应用
(2)Registry:负责存储镜像,docker pull/push的命令都由其负责,要对用户进行访问控制,不同的用户对docker镜像有不同的读写权限,Registry每次都会指向一个不同的TOKEN(公钥对),强制用户每次的pull、push都必须带一个合法的TOKEN,Registry会通过公钥对进行解密验证,身份合法才能指定操作
(3)CORE SERVICES:harbor的核心功能,提供三个服务:
①UI:提供图形化界面
②webhook:仓库上所有镜像的变化(增删改),都会传送给webhook,以显示在UI界面上
③TOKEN:签发每一次push、pull的公钥对,用来和仓库之间进行权限认证
(4)database(harbor-db),为核心组件 core services提供数据库存储服务,包括用户权限、审计日志、docker镜像的分组和项目信息
(5)job service:主要用于镜像的复制,本地镜像可以同步到远程harbor上
(6)log collector(harbor-log):统一日志收集工具
6、harbor都是基于docker容器化部署的,docker-compose一键编排、安装
7、实验架构
|-------------|--------------------------------------------------------------|
| docker1 | 安装仓库:20.0.0.61(docker-ce、har-bor、docker-compose) |
| docker2 | 客户端:20.0.0.62(docker-ce、har-bor、docker-compose) |
| docker3 | 安装仓库(实现远程同步):20.0.0.63(docker-ce、har-bor、docker-compose) |
8、实验过程
(1)部署docker-compose和harbor
![](https://file.jishuzhan.net/article/1735582505282572289/1227e45a2382a1c93daeb1f9d8afa3c7.webp)
(2)修改配置文件
![](https://file.jishuzhan.net/article/1735582505282572289/a2199fa144397811ff54a9f9557d9abc.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/d2f5621df98b892544a885e31248d50b.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/0d8bab00d2693528c8a480abf4ccf814.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/44c6ec0a61b7cabf9dcec2a64c9cde1c.webp)
(3)安装
①./prepare:编译环境
![](https://file.jishuzhan.net/article/1735582505282572289/ce3bb774aafb820eaaefcc57eab60055.webp)
②https:docker-harbor默认的通信协议是https,加密通信协议
③注释https:
![](https://file.jishuzhan.net/article/1735582505282572289/d2f5621df98b892544a885e31248d50b.webp)
④./install.sh
![](https://file.jishuzhan.net/article/1735582505282572289/610edb864d5f56a8e5cf9359bbd66fdf.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/909e37cf0e55d2d996d467c9626826f9.webp)
⑤安装若报错,systemctl restart docker
![](https://file.jishuzhan.net/article/1735582505282572289/a6572afc6bcd680619d98d23a246f509.webp)
(4)浏览器配置:20.0.0.61
![](https://file.jishuzhan.net/article/1735582505282572289/13388103f6a88e2de6d2eb52b6652c0e.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/4c6d4dea78c9fcca94e566414f17cbb4.webp)
(5)上传镜像
①拉取镜像
![](https://file.jishuzhan.net/article/1735582505282572289/71429532d53aebdd556059dd8327b0f3.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/38a91d2f6731f078ce3485bc9c4d3f29.webp)
②登录仓库、上传镜像
docker login -u admin -p 123456 http://127.0.0.1
docker push 127.0.0.1/library/nginx:hyde1
![](https://file.jishuzhan.net/article/1735582505282572289/6bd80dc37a6064f7224ba2e2a875d12b.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/aa07472dd2a9e18ad4c113ef13121a11.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/67fe89d1f2e838564b28564d87785620.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/1bb30e062bd2605d5a006d5c73faddc4.webp)
( 6 ) 创建私有仓库
![](https://file.jishuzhan.net/article/1735582505282572289/1a0c7090ac95eb4cbb320a0458877897.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/0029d52b8f95c51b082adc76b86fc99a.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/67fd99752a564c7ba03175cc484afb6c.webp)
①创建用户
![](https://file.jishuzhan.net/article/1735582505282572289/52c93e8951c001ffbf94134c5e4bc933.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/837d36dcd43dea971a7766cf25ed4faa.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/2f7aa975fba71efe871fea29df970e18.webp)
②上传镜像
登录仓库: docker login -u yyy -p Abc123456 http://127.0.0.1
修改标签:docker tag nginx:1.22.0 127.0.0.1/haide/nginx:hyde2
![](https://file.jishuzhan.net/article/1735582505282572289/a0e5f7363b01e03270d76ab4bd6b0251.webp)
上传镜像:docker push 127.0.0.1/haide/nginx:hyde2
![](https://file.jishuzhan.net/article/1735582505282572289/db3c35c8032a47ecf7415524024519e6.webp)
权限管理、角色控制:
|-----------|----------------------|
| 角色的作用 ||
| 访客 | 只能看,只有读权限 |
| 开发者 | 有读写权限,但是没有删除的权限 |
| 维护人员 | 有读写权限、修改其他配置项的权限 |
| 项目管理员 | 对该项目拥有所有权限 |
![](https://file.jishuzhan.net/article/1735582505282572289/e57f8b9e3d60a9397701c64a7075c701.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/8c58a9e6f50751732df54a7589db4f51.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/7df2764d9d7073b0cd0815d5ba862015.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/6a795e33d0d9d81489c98615ef526b5e.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/ff961fe5cdad3785ac412ed773dc5204.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/100f6c2a8e2bcb24f20fc80e96591784.webp)
(7)远程配置(docker2远程登录docker1,上传镜像)
①修改docker-services的配置文件
![](https://file.jishuzhan.net/article/1735582505282572289/e5e7d1c1536a54f615e7988564765cdd.webp)
②拉取镜像:docker pull logstash
![](https://file.jishuzhan.net/article/1735582505282572289/0e851c30a0161953dd4c33e1848c1b2d.webp)
③远程登录docker1的私有仓库:docker login -u yyy -p Abc123456 http://20.0.0.61
![](https://file.jishuzhan.net/article/1735582505282572289/6be640a13a067c8701854f1e71cce01c.webp)
④上传镜像:docker push 20.0.0.61/haide/logstash:hyde3
修改镜像标签:docker tag logstash:latest 20.0.0.61/haide/logstash:hyde3
![](https://file.jishuzhan.net/article/1735582505282572289/2ac66975620bc85f2df069f5c5d0d888.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/7b9ea4aa7affa1ea9c09e20b3a56d984.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/82291a81eb60a7d341ae1f1a0bb13c8d.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/89d8863d7d104ab63a8a044812ceb9b9.webp)
( 8 ) 远端获取镜像(远程复制docker1的镜像到docker3上)
①部署docker-compose和harbor
![](https://file.jishuzhan.net/article/1735582505282572289/1227e45a2382a1c93daeb1f9d8afa3c7.webp)
②修改配置文件
![](https://file.jishuzhan.net/article/1735582505282572289/a2199fa144397811ff54a9f9557d9abc.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/a12913d7435795c5bce891a53d3a322c.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/f13aa8737b6128f78c78fa272a1863f8.webp)
③安装:./prepare:编译环境
![](https://file.jishuzhan.net/article/1735582505282572289/ce3bb774aafb820eaaefcc57eab60055.webp)
systemctl restart docker
./install.sh
![](https://file.jishuzhan.net/article/1735582505282572289/610edb864d5f56a8e5cf9359bbd66fdf.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/909e37cf0e55d2d996d467c9626826f9.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/100442198508d36d9ebc67d2339999d7.webp)
④浏览器配置:20.0.0.63
配置仓库管理:
![](https://file.jishuzhan.net/article/1735582505282572289/555efed90ddcf47ed80c3ef51d854873.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/a828145e285cbfbaf155e16ef27e1a34.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/2b03d074548c06e12c31fa94272c9b04.webp)
配置复制管理:
![](https://file.jishuzhan.net/article/1735582505282572289/8676e4bbf3da37e6ee50288afff25cf4.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/ed1dfcecc88691f7a3b7ff47d630c470.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/27a36b7afc8b81a4722d82120eba92c2.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/627b63935f0f96f6d660e8155e84c748.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/17f31056a7460dcc112555ae471eb080.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/1067a036395b337d43da2467da0af7f3.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/bdd9511ff4a7ef563f21de8ea95354d7.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/e5b6905c38d86a9c25497e2f9b8ebe7f.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/a6d0adf7df8a87be2f69ef1aa9c8fe8e.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/af1de48dd40e6ef867c0c7d6ab076d75.webp)
复制私有仓库的镜像:
点进要复制的仓库、进行配置管理
![](https://file.jishuzhan.net/article/1735582505282572289/174b41ac3404961918844f218212f406.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/b85fdf580209bee021863035139c46c7.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/f3fc0a32a4cfd158dad6c1d8bd717ac7.webp)
再重新复制镜像:
![](https://file.jishuzhan.net/article/1735582505282572289/ebf39f353c0a3b2531b7d21d5151b2de.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/7eb780ab5a9e5ff58b6c52202b16dfaa.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/1e99572cbdb5adff1a6ff68e72fcdbe4.webp)
![](https://file.jishuzhan.net/article/1735582505282572289/ea91eeac0b089f129be1dddc43b54f18.webp)