docker 私有仓库应用之Harbor部署安装文档

in docker with 0 comment

简介

Harbor是VMware中国研发团队开发并开源企业级Registry,对中文支持很友好。
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。

Harbor具有如下特点:
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.Harbor中文官网:https://vmware.github.io/harbor/cn/
2.Github地址:https://github.com/vmware/harbor
3.Harbor下载地址:https://github.com/vmware/harbor/releases
4.Harbor二进制离线包镜像站点:http://harbor.orientsoft.cn/

Harbor 安装前准备

1.Harbor中文官网:https://vmware.github.io/harbor/cn/
2.Github地址:https://github.com/vmware/harbor
3.Harbor下载地址:https://github.com/vmware/harbor/releases
4.Harbor二进制离线包镜像站点:http://harbor.orientsoft.cn/

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce
docker --version
Docker version 17.12.1-ce, build 7390fc6
systemctl start docker
systemctl status docker
systemctl enable docker
wget https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9
tar -xzvf pip-9.0.1.tar.gz
cd pip-9.0.1
python setup.py install
pip -V
pip 9.0.1 from /usr/lib/python2.7/site-packages (python 2.7)
python setup.py install  
Traceback (most recent call last):  
File "setup.py", line 31, in <module>  
from setuptools import setup, find_packages  
ImportError: No module named setuptools

解决办法如下:

wget https://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg
sh setuptools-0.6c11-py2.7.egg
python setup.py install
pip install docker-compose
docker-compose version

结果如下图:
1.png

安装 Habor

下载解压habor(用腾讯云安装离线版1.4跟腾讯云ext3文件系统不兼容)

#这里下载的离线安装包里面包含了镜像,这样后续部署及安装都会比较快,总共509M大小
wget http://harbor.orientsoft.cn/harbor-1.2.0/harbor-offline-installer-v1.2.0.tgz
cd harbor
#vim harbor.cfg

指定 harbor 的主机名,可以是IP地址,也可以是域名(不能注释再指定)
hostname = 192.168.xx.xx
指定用户访问使用的协议,默认http  
ui_url_protocol = http
指定 mysql 数据库管理员密码
db_password = root123
作业服务中的最大复制worker数(缺省值为3)
max_job_workers = 3 
是否允许创建用于生成/验证注册表令牌的私钥和根证书(默认为on)
customize_crt = on
设置证书文件路径
ssl_cert = /data/cert/server.crt
ssl_cert_key = /data/cert/server.key
secretkey_path = /data
admiral_url = NA
clair_db_password = password
邮件相关信息配置
email_identity = 
配置邮件服务器地址
email_server = smtp.mydomain.com
配置邮件服务器端口
email_server_port = 25
配置用户
email_username = admin@mydomain.com
配置密码
email_password = abc
配置发件人地址
email_from = admin <admin@mydomain.com>
配置是否进行ssl加密
email_ssl = false
指定 harbor 管理员密码
harbor_admin_password = Harbor12345
使用的认证类型。默认为db_auth,即凭据存储在MySQL数据库中(Harbor还 支持本地及LDAP认证方式)
auth_mode = db_auth
LDAP端点URL,仅当auth_mode设置为ldap_auth时使用
ldap_url = ldaps://ldap.mydomain.com
查找用户的基本DN,仅当auth_mode设置为ldap_auth时使用
ldap_basedn = ou=people,dc=mydomain,dc=com
用于在LDAP搜索期间匹配用户的属性
ldap_uid = uid 
用于搜索用户的范围
ldap_scope = 3 
设置LDAP超时时间
ldap_timeout = 5
是否允许开放注册(默认允许)
self_registration = on
令牌服务创建的令牌的过期时间(以分钟为单位,默认30分钟)
token_expiration = 30
用户创建项目的权限,默认是everyone(所有人),也可以设置为adminonly(只有管理员才能创建)
project_creation_restriction = everyone
确定当 Harbor 与远程注册表实例通信时是否验证SSL / TLS证书
verify_remote_cert = on
./install.sh

脚本执行结果如下图:
2.png

docker-compose ps

结果如图:
3.png

a.harbor-adminserver:harbor系统管理服务
b.harbor-db: 由官方mysql镜像构成的数据库容器
c.harbor-jobservice:harbor的任务管理服务
d.harbor-log:harbor的日志收集、管理服务
e.harbor-ui:harbor的web页面服务
f.nginx:负责流量转发和安全验证
g.registry:官方的Docker registry,负责保存镜像

应用 harbor

浏览器输入 http://192.168.xx.xx 登陆 harbor 镜像仓库页面(帐号admin,密码为harbor.cfg默认密码Harbor12345)
4.png

a.登录后harbor的界面:

5.png

b.新建项目(注:默认项目是私有的,公开请打勾)
6.png

c.此处我新建了一个docker公开项目
7.png

8.png

d.更改docker配置(只有这里指定的IP可以登录,否则报错)

grep "ExecStart" /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --insecure-registry=192.168.xx.xx
systemctl daemon-reload
systemctl restart docker

9.png

注:docker默认使用https传输镜像,这里使用的是http,所以需要指定,无论上传还是下载都需要指定,特别注意--需要下载使用harbor仓库镜像的docker都需要配置ExecStart=/usr/bin/dockerd --insecure-registry=192.168.xx.xx

e.登陆 harbor(注:第一种方便,第二种安全,实际中请使用第二种)

docker login -u admin -p Harbor12345 192.168.xx.xx
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Login Succeeded
docker login 192.168.xx.xx
Username: admin
Password: 
Login Succeeded

f.给镜像打 tag 并上传至 harbor(替换成自己IP或者域名)
#原始images

photon       1.0      e6e4e4a2ba1b        20 months ago       128MB

#打标签

docker tag e6e4e4a2ba1b 192.168.xx.xx/docker/photon:1.0

#上传到harbor服务器

docker push 192.168.xx.xx/docker/photon:1.0
The push refers to repository [192.168.xx.xx/docker/photon]
dd60b611baaa: Pushed 
1.0: digest: sha256:6d8fda39c2eb8fdc7b18c27f53fb6c01ac7721e7d55e7d6ae4cf6b1f3f0109fb size: 529

#查看上传情况
10.png

g.下载镜像(红色覆盖区域改成你的IP或者域名)
11.png

h.停止harbor

cd harbor
docker-compose stop

j.启动harbor

cd harbor
docker-compose start

本篇到此结束,欢迎讨论与交流...

Responses