企业级镜像仓库之Harbor部署手册

企业级镜像仓库之Harbor部署手册

1、harbor概述

  • VMware开源的企业级Registry项目Harbor,以Docker公司开源的registry 为基础,提供了管理UI, 基于角色的访问控制(Role Based Access Control),AD/LDAP集成、以及审计日志(Audit logging) 等企业用户需求的功能,同时还原生支持中文,主要特点:
    • 基于角色的访问控制 - 用户与 Docker 镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。
    • 镜像复制 - 镜像可以在多个 Registry 实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景。
    • 图形化用户界面 - 用户可以通过浏览器来浏览,检索当前 Docker 镜像仓库,管理项目和命名空间。
    • AD/LDAP 支持 - Harbor 可以集成企业内部已有的 AD/LDAP,用于鉴权认证管理。
    • 审计管理 - 所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
    • 国际化 - 已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。
    • RESTful API - RESTful API 提供给管理员对于 Harbor 更多的操控, 使得与其它管理软件集成变得更容易。
    • 部署简单 - 提供在线和离线两种安装工具, 也可以安装到 vSphere 平台(OVA 方式)虚拟设备

2、harbor架构介绍

1
2
3
4
5
6
7
8
9
10
11
      Name                     Command                  State                 Ports          
---------------------------------------------------------------------------------------------
harbor-core /harbor/entrypoint.sh Up (healthy)
harbor-db /docker-entrypoint.sh Up (healthy)
harbor-jobservice /harbor/entrypoint.sh Up (healthy)
harbor-log /bin/sh -c /usr/local/bin/ ... Up (healthy) 127.0.0.1:1514->10514/tcp
harbor-portal nginx -g daemon off; Up (healthy)
nginx nginx -g daemon off; Up (healthy) 0.0.0.0:80->8080/tcp
redis redis-server /etc/redis.conf Up (healthy)
registry /home/harbor/entrypoint.sh Up (healthy)
registryctl /home/harbor/start.sh Up (healthy)
  • Harbor的每一个组件都被包装成一个docker容器。自然,Harbor是通过docker compose来部署的。在Harbor源代码的make目录下的docker-compose模板会被用于部署Harbor。打开该模板文件,可以看到Harbor由7个容器组件所组成:
    • proxy - 通过nginx服务器来做反向代理
    • registry - docker官方发布的一个仓库镜像组件
    • ui - 整个架构的核心服务。该容器是Harbor工程的主要部分
    • adminserver - 作为Harbor工程的配置数据管理器使用
    • mysql - 通过官方Mysql镜像创建的数据库容器
    • job services - 通过状态机的形式将镜像复制到远程Harbor实例。镜像删除同样也可以被同步到远程Harbor实例中。
    • log - 运行rsyslogd的容器,主要用于收集其他容器的日志
      • 这些容器之间都通过Docker内的DNS服务发现来连接通信。通过这种方式,每一个容器都可以通过相应的容器来进行访问。对于终端用户来说,只有反向代理(Nginx)服务的端口需要对外暴露。

3、harbor套件部署

3.1、安装docker-compose(Harbor是通过docker compose来部署的)

1
2
3
4
5
6
7
8
#下载docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#赋予可执行权限
chmod +x /usr/local/bin/docker-compose
#构建软连接
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
#确认版本
docker-compose --version

3.2、下载离线安装包

1
2
3
4
5
6
7
#下载地址:https://github.com/goharbor/harbor/releases
#下载全量offline离线安装包
wget https://github.com/goharbor/harbor/releases/download/v2.1.3/harbor-offline-installer-v2.1.3.tgz
#解压
tar xf harbor-offline-installer-v2.0.1.tgz
#切换至harbor安装文件目录
cd harbor

3.3、修改harbor安装的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#harbor主配置文件
cp harbor.yml.tmpl harbor.yml
#用于存放harbor的持久化数据
mkdir -pv /data/share/harbor_data/
#修改harbor.yml主配置文件
#需要写IP地址或者域名
hostname: 192.168.6.10
#http配置
http:
port: 80
#https配置需指定ssl证书,需要时开启
#https:
# # https port for harbor, default is 443
# port: 443
# # The path of cert and key files for nginx
# certificate: /your/certificate/path
# private_key: /your/private/key/path
#harbor登录用户的密码,用户名:admin
harbor_admin_password: qaz000123
#数据库配置
database:
password: qaz000123
max_idle_conns: 50
max_open_conns: 1000
#持久化存储数据目录
data_volume: /data/share/harbor_data

4、安装并启动Harbor

4.1、安装之前需要启动docker,然后执行安装脚本

1
2
./install.sh
#注意:安装完成后harbor是通过docker-compose启动和管理的

4.2、安装完成后查看下正在运行的docker容器

1
docker ps | grep harbor

5、访问harbor WEB界面

6、Harbor的使用(上传下载镜像)

6.1、web页面新建szzt_production项目

  • 目前已制作或上传自有镜像共计15个
    image_1evelll971nvslcp8ea7m71b6d13.png-163kB

6.2、将本地容器commit后,然后push到私有仓库

1
2
3
4
5
docker login 192.168.6.10
docker commit f1944ac523f7 192.168.6.10/szzt_production/nacos-server:1.3.2
docker push 192.168.6.10/szzt_production/nacos-server:1.3.2
# docker tag xoa_all_production:v1 192.168.0.8/xoa_all_production/2020.06.01.1:v1
# docker push 192.168.0.8/xoa_all_production/2020.06.01.1:v1

6.3、修改各个docker节点或k8s node节点的仓库源

1
2
3
4
5
6
7
cat /etc/docker/daemon.json 
{
"registry-mirrors": ["https://wpf59uhk.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.6.10"]
}
#重启docker
systemctl restart docker

6.4、拉取私有仓库镜像

1
docker pull 192.168.6.10/szzt_production/nacos-server:1.3.2

7、harbor的管理与启停

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#切换到安装目录
cd /soft/harbor_docker/
#查看harbor运行情况
docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------------------------
harbor-core /harbor/entrypoint.sh Up (healthy)
harbor-db /docker-entrypoint.sh Up (healthy)
harbor-jobservice /harbor/entrypoint.sh Up (healthy)
harbor-log /bin/sh -c /usr/local/bin/ ... Up (healthy) 127.0.0.1:1514->10514/tcp
harbor-portal nginx -g daemon off; Up (healthy)
nginx nginx -g daemon off; Up (healthy) 0.0.0.0:80->8080/tcp
redis redis-server /etc/redis.conf Up (healthy)
registry /home/harbor/entrypoint.sh Up (healthy)
registryctl /home/harbor/start.sh Up (healthy)
#启动harbor服务
docker-compose up -d
#关闭harbor服务
docker-compose stop
-------------本文结束感谢您的阅读-------------
LiGuanCheng wechat
如有问题,请与我微信交流或通过右下角“daovoice”与我联系~。
请我喝一杯咖啡~