摘要
本博文主要介绍CICD中Harbor的构建和实战。Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能
一、安装docker和docker-composecurl -L https://github.com/docker/compose/releases/download/1.13.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
修改docker配置
vim /etc/docker/daemon.json
# 添加该行,ip为服务器ip
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
"insecure-registries":["仓库的ip地址"]
}
重启docker服务
systemctl restart docker
二、安装Harbor
# 下载压缩包
wget https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-online-installer-v1.1.2.tgz
#解压文件
tar xvf harbor-online-installer-v1.1.2.tgz
#编辑文件
vim harbor/harbor.cfg
# hostname设置访问地址,可以使用ip、域名,不可以设置为127.0.0.1或localhost。
hostname = 192.168.25.140
# 访问协议,默认是http,也可以设置https,如果设置https,则nginx ssl需要设置on
ui_url_protocol = http
# mysql数据库root用户默认密码root123,实际使用时修改下
db_password = harbor
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
# 邮件设置,发送重置密码邮件时使用
email_identity =
email_server = 你的邮箱
email_server_port = 25
email_username = 邮箱的账号
email_password = 邮箱的密码
email_from = admin
email_ssl = false
# 启动Harbor后,管理员UI登录的密码,默认是Harbor12345 账户是admin
harbor_admin_password = 初始仓库密码
# 认证方式,这里支持多种认证方式,如LADP、本次存储、数据库认证。默认是db_auth,mysql数据库认证
auth_mode = db_auth
# LDAP认证时配置项
#ldap_url = ldaps://ldap.mydomain.com
#ldap_searchdn = uid=searchuser,ou=people,dc=mydomain,dc=com
#ldap_search_pwd = password
#ldap_basedn = ou=people,dc=mydomain,dc=com
#ldap_filter = (objectClass=person)
#ldap_uid = uid
#ldap_scope = 3
#ldap_timeout = 5
# 是否开启自注册
self_registration = on
# Token有效时间,默认30分钟
token_expiration = 30
# 用户创建项目权限控制,默认是everyone(所有人),也可以设置为adminonly(只能管理员)
project_creation_restriction = everyone
verify_remote_cert = on
# 执行安装脚本
./install.sh
# 安装成功的脚本
✔ ----Harbor has been installed and started successfully.----
Now you should be able to visit the admin portal at http://10.68.7.20 .
For more details, please visit https://github.com/vmware/harbor .
docker login 192.168.25.140
Authenticating with existing credentials...
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
3.3 镜像进行tag打包
# 镜像打标签
docker tag 镜像名称 仓库IP/项目的仓库名/镜像名称
# 镜像的上传
docker push 仓库IP/项目的仓库名/镜像名称
我们将192.168.25.140作为主节点,192.168.25.128,192.168.25.150作为从节点。当我们往主节点上面Push镜像的时候,自动复制到节点上面。
这里同步模式,我们选择基于推送的模式,源资源过滤器,我们使用默认目标的Registry就选择我们刚才第一步配置的仓库,触发模式,我们选择事件驱动的方式,然后勾选同步删除,以及覆盖。
五、问题与解决方案/etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
"insecure-registries":["192.168.25.140"]
}
如果有python的pip环境,直接安装
pip install docker-compose