docker harboor搭建

本文详细介绍Harbor的安装过程及高可用配置方法,包括离线安装步骤、配置参数说明及镜像同步设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

harbor功能

vmware官方开源服务列表地址:https://vmware.github.io/harbor/cn/
harbor官方github地址:https://github.com/vmware/harbor
harbor官网:https://goharbor.io/

  1. 基于角色的访问控制:用户与docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。
  2. 镜像复制:镜像可以在多个registry(仓库)实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景。
  3. 图形化用户界面:用户可以通过浏览器来浏览,检索当前docker镜像仓库,管理项目和命名空间。
  4. AD/LDAP支持:harbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理。
  5. 审计管理:所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
  6. 国际化:已有中文,英文,德文。日文和俄文的本地版本。
  7. RESTful API - RESTful API:提供给管理员对于harbor更多的操控,使得与其它管理软件集成变得更容易。
  8. 部署简单:提供在线和离线两种安装工具,也可以安装到vSphere平台(OVA方式)虚拟设备。

harbor组件

  1. nginx:harbor的一个反向代理组件,代理registry、ui、token等服务。这个代理会转发harbor web和docker client的各种请求到后端服务上。
  2. harbor-db:存储项目的元数据、用户、规划、复制策略等信息。
  3. harbor-jobservice:harbor里面主要是为了镜像仓库之间同步使用的。
  4. harbor-log:收集其它harbor的日志信息。
  5. harbor-ui:一个用户界面模块,用来管理registry。
  6. registry:存储docker images的服务,并且提供pull/push服务。
  7. redis:存储缓存信息
  8. webhook:当registry中的image状态发生变化的时候去记录更新日志、复制等操作。
  9. token service:在docker client进行pull/push的时候负责token的发放。

自签证书

openssl genrsa -out /usr/local/harbor/certs/harbor-ca.key 2048
openssl req -x509 -new -nodes -key /usr/local/harbor/certs/harbor-ca.key -subj "/CN=harbor.timerovers.com" -days 7120 -out /usr/local/harbor/certs/harbor-ca.crt

harbor配置https处修改
https:
  port: 443
  certificate: /usr/local/harbor/certs/harbor-ca.crt
  private_key: /usr/local/harbor/certs/harbor-ca.key

安装harbor1.10.1

下载地址:https://github.com/vmware/harbor/releases
安装文档:https://github.com/vmware/harbor/blob//master/docs/installation_guide.md
habor1.7(包含1.7)之前的版本配置和harbor1.8之后的版本配置不一样

harbor1.10.1离线包安装

1. 下载

wget https://github.com/goharbor/harbor/releases/download/v1.10.1/harbor-offline-installer-v1.10.1.tgz

2. 解压

tar -zxf harbor-offline-installer-v1.10.1.tgz
cd harbor
[root@localhost harbor]# ll
总用量 662120
drwxr-xr-x 3 root root        20 5月  20 22:08 common
-rw-r--r-- 1 root root      3398 2月  10 2020 common.sh
-rw-r--r-- 1 root root 677974489 2月  10 2020 harbor.v1.10.1.tar.gz
-rw-r--r-- 1 root root      5878 5月  20 21:17 harbor.yml
drwxr-xr-x 2 root root        24 5月  20 22:08 input
-rwxr-xr-x 1 root root      2284 2月  10 2020 install.sh
-rw-r--r-- 1 root root     11347 2月  10 2020 LICENSE
-rwxr-xr-x 1 root root      1749 2月  10 2020 prepare

3.修改配置文件

vim harbor.yml
hostname: images.harbor.com 			#修改hostname

http
  port: 80

#https:									#注释掉https
  #port: 443
  #certificate: /your/certificate/path
  #private_key: /your/private/key/path

harbor_admin_password: admin			#修改harbor web登录密码


database:
  password: database					#修改数据库密码
  max_idle_conns: 50
  max_open_conns: 100

#宿主机上的存储harbor数据的目录
data_volume: /data

clair:
  updaters_interval: 12
jobservice:
  max_job_workers: 10
notification:
  webhook_job_max_retry: 10
chart:
  absolute_url: disabled
log:
  level: info
  local:
    rotate_count: 50
    rotate_size: 200M
    location: /var/log/harbor
proxy:
  http_proxy:
  https_proxy:
  no_proxy:
  components:
    - core
    - jobservice
    - clair

**4.安装docker-compose **

curl -L "https://get.daocloud.io/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

5.安装harbor

cd harbor
./install.sh

6.将私有仓库地址加入docker配置文件

#将仓库地址加入docker配置文件,用于提交镜像,只拉取不提交镜像不需要配置。
[root@localhost images]# cat /etc/docker/daemon.json 
{
        "registry-mirrors": ["https://njrds9qc.mirror.aliyuncs.com"],
        "insecure-registries":["192.168.8.10:5000"]
}

systemctl restart docker

部署harbor1.7.6高可用

介绍

harbor支持基于策略的Docker镜像复制功能,这类似于mysql的主从同步,其实可以实现不同的数据中心、不同的运行环境之间的同步镜像,并提供友好的管理界面,大大简化了实际运维中的镜像管理工作,已经有用很多互联网公司使用harbor搭建内外docker仓库的案例,并且还有实现了双向复制的案例。

环境: 需要python2,docker,docker-compose
192.168.8.20 harbor01
192.168.8.30 harbor02

基于镜像复制高可用

1.安装docker-compose

curl -L "https://get.daocloud.io/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

2.解压

tar -zxf harbor-offline-installer-v1.7.6.tgz -C /usr/local/
cd /usr/local/harbor/
[root@localhost harbor]# ll
总用量 587732
drwxr-xr-x 3 root root        23 5月  21 21:02 common
-rw-r--r-- 1 root root       939 9月  12 2019 docker-compose.chartmuseum.yml
-rw-r--r-- 1 root root       975 9月  12 2019 docker-compose.clair.yml
-rw-r--r-- 1 root root      1434 9月  12 2019 docker-compose.notary.yml
-rw-r--r-- 1 root root      5608 9月  12 2019 docker-compose.yml
-rw-r--r-- 1 root root      8033 9月  12 2019 harbor.cfg
-rw-r--r-- 1 root root 600483180 9月  12 2019 harbor.v1.7.6.tar.gz
-rwxr-xr-x 1 root root      5739 9月  12 2019 install.sh
-rw-r--r-- 1 root root     11347 9月  12 2019 LICENSE
-rw-r--r-- 1 root root   1263409 9月  12 2019 open_source_license
-rwxr-xr-x 1 root root     36337 9月  12 2019 prepare

3.修改配置

harbor01配置

# hostname设置访问地址,可以使用ip、域名,不可以设置为127.0.0.1或localhost
hostname = 192.168.8.20				#修改IP域名都可以

# 访问协议,默认是http,也可以设置https,如果设置https,则nginx ssl需要设置on
ui_url_protocol = http


max_job_workers = 10 
customize_crt = on
#nginx cert与key文件的路径, 只有采用https协议是才有意义
ssl_cert = /data/cert/server.crt
ssl_cert_key = /data/cert/server.key
secretkey_path = /data
admiral_url = NA


log_rotate_count = 50
log_rotate_size = 200M
http_proxy =
https_proxy =
no_proxy = 127.0.0.1,localhost,core,registry

# 邮件设置,发送重置密码邮件时使用
email_identity = 
email_server = smtp.mydomain.com
email_server_port = 25
email_username = sample_admin@mydomain.com
email_password = abc
email_from = admin <sample_admin@mydomain.com>
email_ssl = false
email_insecure = false

# 启动Harbor后,管理员UI登录的密码,默认是Harbor12345
harbor_admin_password = admin						#修改登录密码
#用户认证模式,默认是db_auth,也可以使用ldap_auth验证
auth_mode = db_auth

# LDAP认证时配置项
ldap_url = ldaps://ldap.mydomain.com
ldap_basedn = ou=people,dc=mydomain,dc=com
ldap_uid = uid 
ldap_scope = 2 
ldap_timeout = 5
ldap_verify_cert = true
ldap_group_basedn = ou=group,dc=mydomain,dc=com
ldap_group_filter = objectclass=group
ldap_group_gid = cn
ldap_group_scope = 2

# 是否开启自注册
self_registration = on

# Token有效时间,默认30分钟
token_expiration = 30

# 用户创建项目权限控制,默认是everyone(所有人),也可以设置为adminonly(只能管理员)
project_creation_restriction = everyone

#数据库根据实际使用时修改下
db_host = postgresql
db_password = root123
db_port = 5432
db_user = postgres

redis_host = redis
redis_port = 6379
redis_password = 
redis_db_index = 1,2,3

clair_db_host = postgresql
clair_db_password = root123
clair_db_port = 5432
clair_db_username = postgres
clair_db = postgres
clair_updaters_interval = 12

uaa_endpoint = uaa.mydomain.org
uaa_clientid = id
uaa_clientsecret = secret
uaa_verify_cert = true
uaa_ca_cert = /path/to/ca.pem

registry_storage_provider_name = filesystem
registry_storage_provider_config =
registry_custom_ca_bundle = 

harbor02配置

hostname = 192.168.8.30								#修改IP
ui_url_protocol = http
max_job_workers = 10 
customize_crt = on
ssl_cert = /data/cert/server.crt
ssl_cert_key = /data/cert/server.key
secretkey_path = /data
admiral_url = NA
log_rotate_count = 50
log_rotate_size = 200M
http_proxy =
https_proxy =
no_proxy = 127.0.0.1,localhost,core,registry
email_identity = 
email_server = smtp.mydomain.com
email_server_port = 25
email_username = sample_admin@mydomain.com
email_password = abc
email_from = admin <sample_admin@mydomain.com>
email_ssl = false
email_insecure = false
harbor_admin_password = admin						#修改登录密码
auth_mode = db_auth
ldap_url = ldaps://ldap.mydomain.com
ldap_basedn = ou=people,dc=mydomain,dc=com
ldap_uid = uid 
ldap_scope = 2 
ldap_timeout = 5
ldap_verify_cert = true
ldap_group_basedn = ou=group,dc=mydomain,dc=com
ldap_group_filter = objectclass=group
ldap_group_gid = cn
ldap_group_scope = 2
self_registration = on
token_expiration = 30
project_creation_restriction = everyone
db_host = postgresql
db_password = root123
db_port = 5432
db_user = postgres
redis_host = redis
redis_port = 6379
redis_password = 
redis_db_index = 1,2,3
clair_db_host = postgresql
clair_db_password = root123
clair_db_port = 5432
clair_db_username = postgres
clair_db = postgres
clair_updaters_interval = 12
uaa_endpoint = uaa.mydomain.org
uaa_clientid = id
uaa_clientsecret = secret
uaa_verify_cert = true
uaa_ca_cert = /path/to/ca.pem
registry_storage_provider_name = filesystem
registry_storage_provider_config =
registry_custom_ca_bundle = 

5.启动停止

cd /usr/local/harbor
docker-compose start
docker-compose stop

6.页面配置镜像同步
以下是主主同步(项目名必须一致)

-harbor01配置

  1. web访问192.168.8.20(harbor01)

  2. 创建名为:timerovers项目
    在这里插入图片描述

  3. 创建同步目标
    在这里插入图片描述
    在这里插入图片描述

  4. 复制管理新建规则
    在这里插入图片描述
    在这里插入图片描述

-harbor02配置
和harbor01步骤一样

  1. web访问192.168.8.30(harbor02)
  2. 创建名为:timerovers项目
  3. 创建同步目标
  4. 复制管理新建规则

7.将私有仓库地址加入docker配置文件

#将仓库地址加入docker配置文件,用于提交镜像,只拉取不提交镜像不需要配置。
[root@localhost images]# cat /etc/docker/daemon.json 
{
        "registry-mirrors": ["https://njrds9qc.mirror.aliyuncs.com"],
        "insecure-registries":["192.168.8.10:5000"]
}

systemctl restart docker
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值