docker私有仓库-harbor
简单说一下Harbor的部署,踩了几个坑,参考同事大神的配置文件,一脸懵逼的部署出来了,其中部分内容参考了网上一些大神的文档,本篇文章仅供参考学习,如有雷同,万分荣幸。
这篇文档仅限于centos7参考,掉坑概不负责
一、Harbor官方文档
1.部署及配置文档
https://github.com/vmware/harbor/blob/master/docs/installation_guide.md
https://github.com/vmware/harbor/releases #安装包地址,安装文档里面有提及
2.用户使用指南
https://github.com/vmware/harbor/blob/master/docs/user_guide.md
3.Harbor各组件作用
(这个是网上抄的【http://blog.csdn.net/u010278923/article/details/77941995】)
Harbor主要组件包括proxy,他是一个nginx前端代理,主要是分发前端页面ui访问和镜像上传和下载流量,上图中通过深蓝色先标识;ui提供了一个web管理页面,当然还包括了一个前端页面和后端API,底层使用mysql数据库;registry是镜像仓库,负责存储镜像文件,当镜像上传完毕后通过hook通知ui创建repository,上图通过红色线标识,当然registry的token认证也是通过ui组件完成;adminserver是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候回需要加载adminserver的配置,通过灰色线标识;jobsevice是负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log,上图通过紫色线标识;log是日志汇总组件,通过docker的log-driver把日志汇总到一起,通过浅蓝色线条标识。

二、安装前提
1.安装docker
请参考【https://docs.docker.com/engine/installation/linux/docker-ce/centos/】
2.安装docker-compose
请参考【https://docs.docker.com/compose/install/】
安装docker-compose 有两种方式
()pip install docker-compose ()直接下载docker-compose
三、部署Harbor
1.下载Harbor安装包
wget -C -t -T 'https://storage.googleapis.com/harbor-releases/harbor-online-installer-v1.3.0.tgz' #下载在线版
2.配置相关参数
(1)解压压缩包
tar -xf harbor-online-installer-v1.3.0.tgz
(2)配置相关参数
harbor.cfg中更改的参数并不多,本人本次部署,主要遇到两中情况,在于认证模式(db_auth和ldap_auth),所以主要分别说明db_auth和ldap_auth的设置区别
db_auth
cd harbor/ #进入加压后的目录 vim harbor.cfg #配置初始参数
hostname = reg.dingkai.cn #配置harbor访问的域名,也可以用IP地址,但不建议用
ui_url_protocol = https #配置https方式访问,默认是http,如果一定要用http访问,可能会报错,解决方法可参考【https://github.com/vmware/harbor/blob/master/docs/user_guide.md#pulling-and-pushing-images-using-docker-client】,例如(vim /etc/docker/daemon.json,然后添加{"insecure-registries":["reg.dingkai.com:80"]})
db_password = root123 #harbor数据库密码,可以使用默认的
max_job_workers = 13 #最大线程数,可根据实际需求设置
customize_crt = on #默认开启,prepare脚本会创建用于生成/验证注册表令牌的私钥和根证书;如果设置成off,就要使用外部来源提供密钥和根证书
ssl_cert = ./cert/dingkai.crt #https的域名crt文件
ssl_cert_key = ./cert/dingkai.key #https的域名key文件
secretkey_path = /opt/data #secretkey文件存储值为加解密在副本策略中远端仓库的密码,长度为16位字符,生产中必需修改该值.
admiral_url = NA #当harbor独立部署时,设置为NA
clair_db_password = Harbor.123 #
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
######################## harbor_admin_password = Harbor.123 #Harbor的登录密码
auth_mode = db_auth #认证模式,数据库认证 ###本次使用数据库认证,ladp相关可以不用理会###
#ldap_url = ldap://ldap.dingkai.cn:389
#ldap_searchdn = cn=admin,dc=xiaoneng,dc=cn
#ldap_search_pwd = Harbor.123
#ldap_basedn = ou=Users,dc=dingkai,dc=cn
#ldap_filter = (objectClass=person)
#ldap_uid = cn
#ldap_scope = 3
#ldap_timeout = 5
###本次使用数据库认证,ladp相关可以不用理会###
self_registration = off #关闭用户注册
token_expiration = 30 #token有效期
project_creation_restriction = adminonly #只允许管理员创建项目
db_host = mysql #harbor的mysql链接地址,使用默认就可以
db_port = 3306 #harbor的mysql链接端口,使用默认就可以
db_user = root #harbor的mysql用户,使用默认就可以
verify_remote_cert = off #远程连接时不使用证书 ######uaa认证模式,不使用不需要理会######
uaa_endpoint = uaa.mydomain.org
uaa_clientid= id
uaa_clientsecret= secret
uaa_ca_root= /path/to/uaa_ca.pem
######uaa认证模式,不使用不需要理会######
使用ldap_auth是的habor.cfg配置
cd harbor/ #进入加压后的目录 vim harbor.cfg #配置初始参数
hostname = reg.dingkai.cn #配置harbor访问的域名,也可以用IP地址,但不建议用
ui_url_protocol = https #配置https方式访问,默认是http,如果一定要用http访问,可能会报错,解决方法可参考【https://github.com/vmware/harbor/blob/master/docs/user_guide.md#pulling-and-pushing-images-using-docker-client】
db_password = root123 #harbor数据库密码,可以使用默认的
max_job_workers = #最大线程数,可根据实际需求设置
customize_crt = on #默认开启,prepare脚本会创建用于生成/验证注册表令牌的私钥和根证书;如果设置成off,就要使用外部来源提供密钥和根证书
ssl_cert = ./cert/dingkai.crt #https的域名crt文件
ssl_cert_key = ./cert/dingkai.key #https的域名key文件
secretkey_path = /opt/data #secretkey文件存储值为加解密在副本策略中远端仓库的密码,长度为16位字符,生产中必需修改该值.
admiral_url = NA #当harbor独立部署时,设置为NA
clair_db_password = Harbor. #
log_rotate_count = #日志相关配置,日志文件被删除钱乱转次数
log_rotate_size = 200M #日志规格大小
####邮件相关配置,不多说###
email_identity = email_server = smtp.mydomain.com
email_server_port =
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 = Harbor. #Harbor的登录密码
auth_mode = ldap_auth #认证模式,数据库认证
ldap_url = ldap://ldap.dingkai.cn:389 #ldap的URL
ldap_searchdn = cn=admin,dc=xiaoneng,dc=cn #链接LDAP/AD服务的用户域
ldap_search_pwd = Harbor.123 #为上面设定的用户域设置密码
ldap_basedn = ou=Users,dc=dingkai,dc=cn #基础域为方便寻找一个用户e.g. ou=people,dc=dingkai,dc=com. 仅当 auth_mode is 设置为ldap_auth的时候才使用
#ldap_filter = (objectClass=person) #用户搜索过滤
ldap_uid = cn #该参数被用来匹配一个LDAP搜索的用户,可以使uid,cn,email或者其他的方式。
ldap_scope = 3 #用户搜索范围, 1-LDAP_SCOPE_BASE, 2-LDAP_SCOPE_ONELEVEL, 3-LDAP_SCOPE_SUBTREE. Default is 3
ldap_timeout = 5 #ldap超时时间
self_registration = off #关闭用户注册
token_expiration = #token有效期
project_creation_restriction = adminonly #只允许管理员创建项目
db_host = mysql #harbor的mysql链接地址,使用默认就可以
db_port = #harbor的mysql链接端口,使用默认就可以
db_user = root #harbor的mysql用户,使用默认就可以
verify_remote_cert = off #远程连接时不使用证书 ######uaa认证模式,不使用不需要理会######
uaa_endpoint = uaa.mydomain.org
uaa_clientid= id
uaa_clientsecret= secret
uaa_ca_root= /path/to/uaa_ca.pem ######uaa认证模式,不使用不需要理会######
3.修改docker-compose.yml
主要修改各容器服务的映射目录,将数据数据存储在数据盘的目录中
log:
volumes:
- /opt/log/harbor/:/var/log/docker/:z #各个容器服务的日志
- ./common/config/log/:/etc/logrotate.d/:z registry:
volumes:
- /opt/data/registry:/storage:z #镜像的存储位置
- ./common/config/registry/:/etc/registry/:z
mysql:
volumes:
- /opt/data/database:/var/lib/mysql:z #mysql的数据存放位置
adminserver:
volumes:
- /opt/data/config/:/etc/adminserver/config/:z #harbor配置文件存放位置
- /opt/data/secretkey:/etc/adminserver/key:z #远程秘钥位置,与harbor.cfg中secretkey_path对应
- /opt/data/:/data/:z #adminserver的数据存放位置
ui:
volumes:
- /opt/data/secretkey:/etc/ui/key:z #远程秘钥位置,与harbor.cfg中secretkey_path对应
- /opt/data/ca_download/:/etc/ui/ca/:z #不知道干啥的
- /opt/data/psc/:/etc/ui/token/:z #不知道干啥的
jobservice:
volumes:
- /opt/data/job_logs:/var/log/jobs:z #远程复制镜像的日志
- ./common/config/jobservice/app.conf:/etc/jobservice/app.conf:z
- /opt/data/secretkey:/etc/jobservice/key:z ##远程秘钥位置,与harbor.cfg中secretkey_path对应
4.启动服务
./install.sh 或 ./prepare 或 docker-compose up -d 都可以,为了尊重,本人第一次使用了 ./install.sh
5.访问仓库
在浏览器中输入[reg.dingkai.cn],网页将会自动跳转称https,并出现harbor的web管理界面
ps:实际域名并不是 reg.dingkai.cn ,为了公司信息安全,所以 这里拿 reg.dingkai.cn,因为本屌没有什么秘密可泄露

四、简单仓库操作
1.登录
这个不说了,输入账号和密码就可以登录了
账号:admin
密码:前面在harbor.cfg里面设置的
2.创建项目

3.push镜像
push镜像的前提是必须先建立项目
(1)首先登录
docker login reg.dingkai.cn
Username (admin): admin
Password:
Login Succeeded
(2)push镜像
docker tag ed05c8b25de6 reg.xiaoneng.cn/test/harbor-log:v1.3.0 docker push reg.xiaoneng.cn/test/harbor-log:v1.3.0
The push refers to repository [reg.xiaoneng.cn/test/harbor-log]
2f80d33e3806: Layer already exists
a6f957ab2e5e: Layer already exists
1f7da27101b3: Layer already exists
360c7adfc364: Layer already exists
8587cdacda27: Layer already exists
4bb9abea102e: Layer already exists
49c2c19b0cd0: Layer already exists
v1.3.0: digest: sha256:3a4d1a874ec6633d07e411d8283a61dc2b213bc967bff933549c75bac20a1eba size: 1777
4.pull镜像
docker pull reg.xiaoneng.cn/test/harbor-log:v1.3.0
v1.3.0: Pulling from test/harbor-log
Digest: sha256:3a4d1a874ec6633d07e411d8283a61dc2b213bc967bff933549c75bac20a1eba
Status: Image is up to date for reg.xiaoneng.cn/test/harbor-log:v1.3.0
五、删除镜像
1.在web界面删除
2.使用命令清理空间
cd harbor docker-compose stop docker run -it --name gc --rm --volumes-from registry vmware/registry:2.6.-photon garbage-collect --dry-run /etc/registry/config.yml docker run -it --name gc --rm --volumes-from registry vmware/registry:2.6.-photon garbage-collect /etc/registry/config.yml docker-compose start
docker私有仓库-harbor的更多相关文章
- docker 私有仓库 harbor docker-compose
c创建docker私有仓库 docker pull registry:2.1.1 mkdir /opt/registry#mkdir /var/lib/registry docker run -d - ...
- 物联网架构成长之路(44)-Docker私有仓库Harbor
0. 前言 安装docker.docker-compose,这些在我以前的博客讲过,这里就不继续说明了,有需要的可以参考我之前的博客. https://www.cnblogs.com/wunaozai ...
- 企业级Docker私有仓库Harbor
一.Harbor简介 1.Harbor介绍 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全.标识和管理等,扩展了开源Docke ...
- 微服务探索之路03篇-docker私有仓库Harbor搭建+Kubernetes(k8s)部署私有仓库的镜像
❝ 目录: 微服务探索之路01篇.net6.0项目本地win10系统docker到服务器liunx系统docker的贯通 微服务探索之路02篇liunx ubuntu服务器部署k8s(kubernet ...
- Docker 私有仓库 Harbor registry 安全认证搭建 [Https]
Harbor源码地址:https://github.com/vmware/harborHarbort特性:基于角色控制用户和仓库都是基于项目进行组织的, 而用户基于项目可以拥有不同的权限.基于镜像的复 ...
- Docker私有仓库Harbor部署与使用
一.harbor介绍 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器. 由下面几个组件组成: proxy:nginx前端代理,主要是分发前端页面ui访问和镜像上传和下载 ...
- 菜鸟系列docker——搭建私有仓库harbor(6)
docker 搭建私有仓库harbor 1. 准备条件 安装docker sudo yum update sudo yum install -y yum-utils device-mapper-per ...
- Docker私有仓库与Harbor部署使用
Docker私有仓库与Harbor部署使用 目录 Docker私有仓库与Harbor部署使用 一.本地私有仓库 1. 下载registry镜像 2. 在daemon.json文件中添加私有镜像仓库地址 ...
- docker开源仓库Harbor部署笔记
Harbor介绍Harbor是Vmvare团队开发的开源企业级registry仓库,相比docker官方拥有更丰富的权限权利和完善的架构设计,适用大规模docker集群部署提供仓库服务.项目地址:ht ...
随机推荐
- ZROI 19.08.07模拟赛
传送门 写在前面:为了保护正睿题目版权,这里不放题面,只写题解. "正睿从来没有保证,模拟赛的题目必须原创." "文案不是我写的,有问题找喵老师去."--蔡老师 ...
- python接口自动化六(参数化也就是把之前敲过的代码封装成方法)
前言 前面一篇实现了参数的关联,那种只是记流水账的完成功能,不便于维护,也没什么可读性,接下来这篇可以把每一个动作写成一个函数,这样更方便了. 参数化的思维只需记住一点:不要写死 (由于博客园登录机制 ...
- 安装c#服务
https://www.cnblogs.com/zmztya/p/9577440.html 1.以管理员身份运行cmd 2.安装windows服务 cd C:\Windows\Microsoft.NE ...
- TeamViewer的替代品:realVNC
TeamViewer的替代品:realVNC official web: realvnc: https://www.realvnc.com/ steps: 在需要被控制的PC上装上realVNC的服务 ...
- maven项目解决pom.xml头部 http://maven.apache.org/xsd/maven-4.0.0.xsd报错的问题
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_36611526/article/d ...
- 计算器work_day05
day_work_05 ------Python是一个优雅的大姐姐 作业计算器 设计思路 按照运算优先级和正则先算括号内的值,提出来判断符号问题,然后依次计算. 分析题目设计了四个函数,分别为a)去括 ...
- [luogu]P1026 统计单词个数[DP][字符串]
[luogu]P1026 统计单词个数 题目描述 给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入,且保证每行一定为20个).要求将此字母串分成k份(1&l ...
- vue-cli 构建的 Vue 项目用 localhost 加 端口 能访问,但是切换到 ip 加 端口 就不能访问
问题出在 webpack 的配置 在 config 文件夹下, 找到 index.js 目录, 找到如下代码 host: 'localhost', // can be overwritten by p ...
- [BZOJ4456][ZJOI2016]旅行者:分治+最短路
分析 类似于点分治的思想,只统计经过分割线的最短路,然后把地图一分为二. 代码 #include <bits/stdc++.h> #define rin(i,a,b) for(regist ...
- 大哥带的Orchel数据库的注入
0X01 先进行判断 a.jsp?username=SMITH and = 发现单引号闭合 我们尝试构造闭合 存在注入 a.jsp?username=SMITH'='1 正确 a.jsp?user ...