harbor 企业级私有仓库
简介
Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能
安装harbor
删除之前部署的registry,不然会冲突
bash
[root@server1 ~]# docker rm -f registry
部署证书
bash
[root@server1 ~ ]# mkdir /data
[root@server1 ~ ]# cp -r certs /data
bash
[root@server1 ~]# tar zxf harbor-offline-installer-v2.14.0.tgz
[root@server1 ~]# cd harbor/
[root@server1 harbor]# cp harbor.yml.tmpl harbor.yml
[root@server1 harbor]# vim harbor.yml
hostname: reg.westos.org
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 80
https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: /data/certs/westos.org.crt
private_key: /data/certs/westos.org.key
...
harbor_admin_password: westos
部署harbor
bash
[root@server1 harbor]# ./install.sh --with-trivy


备注:
prepare 脚本是 Harbor 部署的 "预处理器",通过解析配置、生成运行时文件、验证环境依赖,将用户的抽象配置转化为可直接启动的容器编排规则,是连接配置与实际运行的关键步骤。
使用场景
prepare 脚本通常在以下阶段执行:
- 首次部署 Harbor 前,执行 ./prepare 生成初始配置
- 修改 harbor.yml 后,需重新执行 ./prepare 使配置生效(会更新 docker-compose.yml 及相关文件)
- 升级 Harbor 版本时,用于适配新配置并生成兼容的启动文件
查看镜像

查看启动的容器

浏览器访问,会提示不安全,继续前往

用户名admin,密码westos

成功进入

harbor使用
登录仓库

给镜像打标签
root@server1 \~# docker tag busybox:latest reg.westos.org/library/busybox:latest
root@server1 \~# docker tag nginx:latest reg.westos.org/library/nginx:latest
上传镜像
root@server1 \~# docker push reg.westos.org/library/nginx:latest
root@server1 \~# docker push reg.westos.org/library/busybox:latest

配置默认仓库
root@server2 \~# vim /etc/docker/daemon.json
{
"registry-mirrors": "https://reg.westos.org"
}
root@server2 \~# systemctl restart docker
library项目中的镜像下载时可以直接写镜像名称
root@server2 \~# docker pull nginx
公共仓库支持匿名拉取

创建私有仓库

新建用户

授权维护私有仓库

私有仓库上传下载都需要认证,并且还要指定仓库域名
root@server1 \~# docker tag ubuntu:latest reg.westos.org/westos/ubuntu:latest
root@server1 \~# docker push reg.westos.org/westos/ubuntu:latest
root@server2 \~# docker login reg.westos.org
Username: wxh
Password: ***
root@server2 \~# docker pull reg.westos.org/westos/ubuntu
Harbor复制同步
在大规模集群环境下,如果所有 Docker 主机都从一个镜像仓库中拉取镜像,那么此镜像仓库很可能会成为镜像分发的瓶颈,影响镜像分发的速度。可以通过搭建多个镜像仓库并配合使用远程复制功能,解决这一问题
如下图所示,图中的镜像仓库分为两级:主仓库和子仓库。在主仓库和子仓库之间配置了远程复制策略。当一个应用镜像被推送到主仓库后,根据所配置的复制策略,镜像可以立即被分发到其他子镜像仓库。集群中的Docker 主机就可以就近在其中任意一个子仓库中拉取所需的镜像,减轻主仓库的压力

push 推送模式
在第二台虚拟机docker2上也部署harbor,将配置文件中的hostname更换为slave.westos.org,
解析中在docker2后加上slave.westos.org
也需要生成认证
最后在浏览器访问

回到201进行新建仓库

将主仓库作为推送端,目标设置为slave仓库,取消验证远程证书

成功创建

创建复制推送规则,复制策略支持推送和拉取两种方式。推送是指将当前 Harbor实例的Artifact(制品)复制到远程 Artifact 仓库服务下;拉取是指将其他Artifact 仓库服务中的Artifact 复制到当前 Harbor 实例中
Harbor针对 Artifact的不同属性支持 4 种过滤器,分别是名称过滤器、Tag 过滤器、标签过滤器、资源过滤器
这里我们选择远程推送所有项目下的所有镜像到 Docker Compose部署的 Harbor 中。触发模式为事件驱动,一旦有镜像推送到 Harbor中,就会立即推送到远程仓库中



手动尝试复制



成功

上传镜像测试触发复制

成功触发复制

点击id可以查看详情

在slave端可以看到复制过来的镜像
