构建harbor镜像仓库
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,可以在测试和生产环境中部署harbor对业务上的镜像进行统一的管理。harbor 的官方网站如下所示:
https://vmware.github.io/harbor/cn/
一般来讲我们在生产环境部署harbor的时候需要使用多节点方案。将数据库从配置项中抽取出来,后端的镜像资源存储使用统一的共享资源(ceph分配的磁盘挂载到指定目录中)。前端可以使用nginx或者haproxy对多个harbor服务进行负载均衡。
本文搭建一个单机的harbor镜像仓库,体会对镜像进行上传和下载的过程。上述的复杂架构就是在此基础上的不断拓展。
构建harbor
构建环境
具体的构建过程主要分为以下几个步骤:
- 操作系统: centos7.2
- docker版本: 1.12.6
- docker-compose: 1.9.0
首先安装docker服务:
[root@wecloud-test-harbor ~]# yum install docker -y
启动docker服务:
[root@wecloud-test-harbor ~]# systemctl start docker.service
[root@wecloud-test-harbor ~]# systemctl enable docker.service
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
查看docker服务状态:
[root@wecloud-test-harbor ~]# systemctl status docker.service
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since 一 2018-03-26 22:33:04 CST; 12s ago
Docs: http://docs.docker.com
Main PID: 2311 (dockerd-current)
CGroup: /system.slice/docker.service
├─2311 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-run...
└─2318 /usr/bin/docker-containerd-current -l
安装docker-compose:
[root@wecloud-test-harbor ~]# yum install docker-compose -y
下载harbor的离线安装包(离线的安装速度会比较快一些),下载地址如下:
https://storage.googleapis.com/harbor-releases/release-1.4.0/harbor-offline-installer-v1.4.0.tgz
解压harbor-offline-installer-v1.4.0.tgz:
[root@wecloud-test-harbor ~]# tar xvf harbor-offline-installer-v1.4.0.tgz
跳转到harbor目录,修改harbor.cfg配置文件:
[root@wecloud-test-harbor harbor]# grep "^[^#]" harbor.cfg
# harbor的主机地址
hostname = 192.168.99.180
# 这里使用http协议,如果需要上传镜像,需要在docker.service文件中添加一个配置,后续会介绍到
ui_url_protocol = http
max_job_workers = 3
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
#××××××××××××××××××邮件的配置信息××××××××××××××××××
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
#××××××××××××××××××邮件的配置信息××××××××××××××××××
# 管理员密码,管理员帐号为:admin
harbor_admin_password = Harbor12345
# 使用数据库存储认证信息
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
self_registration = on
token_expiration = 30
project_creation_restriction = everyone
# 指定mysql数据库的信息
db_host = mysql
db_password = root123
db_port = 3306
db_user = root
# redis地址
redis_url =
clair_db_host = postgres
clair_db_password = password
clair_db_port = 5432
clair_db_username = postgres
clair_db = postgres
uaa_endpoint = uaa.mydomain.org