前言
目前越来越多项目上容器化了,同时项目的不断更新迭代,并且镜像也作为了项目标准交付物的时候。企业存在一个私有的镜像仓库是很有必要。而Harbor在存储与分发镜像时的安全性也是比较适合企业使用。
什么是Harbor?
Harbor 是一个开源可信云原生注册表项目,用于存储、签名和扫描内容。Harbor 通过添加用户通常需要的功能(例如安全性、身份和管理)来扩展开源 Docker Distribution。拥有更接近构建和运行环境的注册表可以提高image传输效率。Harbor 支持在注册中心之间复制镜像,还提供高级安全功能,例如用户管理、访问控制和活动审计。(官方解释)
官方地址:https://goharbor.io/
官方开源代码地址:https://github.com/goharbor/harbor
官方部署文档:https://goharbor.io/docs/2.2.0/install-config/
官方文档中提供了两种部署方式,在线与离线。此篇文章依据离线方式部署Harbor。
一、系统环境
1.1 软件版本
软件 | 版本 |
---|---|
操作系统 | CentOS Linux release 7.9.2009 (Core) |
Docker | 20.10.7-ce |
Docker-Compose | 1.23.2 |
Harbor | 2.3.0 |
1.2 关闭防火墙及selinux
[root@harbor ~]# systemctl stop firewalld
[root@harbor ~]# systemctl disable firewalld
[root@harbor ~]# setenforce 0
[root@harbor ~]# sed -i 's/enforcing/disabled/' /etc/selinux/config
二、安装Docker与Docker-Compose
2.1 安装Docker
可参考此文章安装Docker-ce
https://blog.csdn.net/weixin_42708432/article/details/117773598
2.2 安装Docker-Compose
[root@harbor ~]# wget https://github.com/docker/compose/releases/download/1.23.2/docker-compose-Linux-x86_64 -o /usr/bin/docker-compose #下载可执行文件
[root@harbor ~]# chmod +x /usr/bin/docker-compose
[root@harbor ~]# docker-compose version
三、安装Harbor
3.1 下载离线安装包
访问harbor开源网站:https://github.com/goharbor/harbor
下载地址:https://github.com/goharbor/harbor/releases/download/v2.3.0/harbor-offline-installer-v2.3.0.tgz
3.2 解压离线包
将下载好的harbor-offline-installer-v2.3.0.tgz上传至服务器,并解压。
[root@harbor ~]# ls
[root@harbor ~]# tar zxf harbor-offline-installer-v2.3.0.tgz -C /usr/local/
[root@harbor ~]# ls /usr/local/harbor/
3.3 安装harbor
[root@harbor ~]# cd /usr/local/harbor/
[root@harbor harbor]# cp harbor.yml.tmpl harbor.yml #拷贝模板配置文件
[root@harbor harbor]# vim harbor.yml
hostname: reg.mydomain.com 修改为hostname: 192.168.16.75
https: 添加注释
port: 443 添加注释
certificate: /your/certificate/path 添加注释
private_key: /your/private/key/path 添加注释
hostname: 填写服务器的IP地址或域名
harbor_admin_password: admin密码
[root@harbor harbor]# ./install.sh #执行安装脚本
在执行安装脚本时,脚本会去镜像仓库拉取对应的镜像并运行
[root@harbor harbor]# docker ps #脚本运行完成后,docker ps会出现10个容器并在运行状态
浏览器访问:
http://IP
默认账号密码:admin/Harbor12345
目前项目只有一个空的
四、Docker主机配置http连接
其他Docker主机需要推送或拉取镜像的话,由于harbor在推送或拉取镜像时默认是不允许http连接的,我们上面在配置harbor时禁用了https。因此在其他的Docker主机上需要修改配置来支持http连接。注意:任何docker主机想上传或拉取镜像到harbor,都需要配置harbor私有仓库的地址。
[root@node1 ~]# vim /etc/docker/daemon.json
添加:"insecure-registries": ["192.168.16.75"]
[root@node1 ~]# systemctl daemon-reload && systemctl restart docker
五、harbor创建项目测试
5.1 创建项目
登录harbor系统,创建一个项目。
5.2 获取推送命令
5.3 推送镜像
例如我现在node1 docker主机上有一个定制版本的nginx镜像。现需要上传至harbor私有仓库中。
[root@node1 ~]# docker login 192.168.16.75 #登录私有仓库,账号密码为harbor网站的(admin/Harbor12345)
[root@node1 ~]# docker image ls
[root@node1 ~]# docker tag nginx:1.17 192.168.16.75/pull-test/nginx:1.17 #为镜像打标签
[root@node1 ~]# docker push 192.168.16.75/pull-test/nginx:1.17 #推送镜像到私有仓库
5.4 harbor查看项目镜像
镜像的拉取也是同样步骤噢。具体更多功能及配置也查看官方博客网站:https://goharbor.io/blog/