自建Docker Harbor镜像管理工具
Harbor是什么?
Harbor 是一个开源的,基于docker registry开发的,具备用户管理,操作审核,项目管理,可扩展的镜像管理工具
Harbor架构
# 主要组件包括:
- Proxy:对应启动组件nginx。它是一个nginx反向代理,代理Notary client(镜像认证)、Docker client(镜像上传下载等)和浏览器的访问请求(Core Service)给后端的各服务;
- UI(Core Service):对应启动组件harbor-ui。底层数据存储使用mysql数据库,主要提供了四个子功能:
Registry:对应启动组件registry。负责存储镜像文件,和处理镜像的pull/push命令。Harbor对镜像进行强制的访问控制,Registry会将客户端的每个pull、push请求转发到token服务来获取有效的token。 UI:一个web管理页面ui; - API:Harbor暴露的API服务;
- Auth:用户认证服务,decode后的token中的用户信息在这里进行认证;auth后端可以接db、ldap、uaa三种认证实现;
- Token服务(上图中未体现):负责根据用户在每个project中的role来为每一个docker push/pull命令issuing一个token,如果从docker client发送给registry的请求没有带token,registry会重定向请求到token服务创建token。
参考:https://blog.csdn.net/liukuan73/article/details/79634524
Harbor的安装配置
# 系统安装运行需求和建议:
1. 一台独立的linux host centos 7.4,docker 17.03.0-ce+以上版本,docker-compose 1.10.0+ .
2. 下载Harbor离线安装包进行安装
3. 自定义Harbor服务器的域名:reg.yujianbo.vip ,可以在hosts文件自定义指向对应的服务器
# 安装步骤:
1. 安装docker
yum remove -y docker docker-common docker-selinux docker-engine yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum makecache fast yum list docker-ce.x86_64 --showduplicates | sort -r #列出可以安装的docker版本 yum -y install docker-ce-18.06.1.ce #安装指定版本的dockermkdir -p /lib/systemd/system/docker.service.d cat > /lib/systemd/system/docker.service.d/docker.conf << 'EOF' [Service] ExecStart= ExecStart=/usr/bin/dockerd --default-ulimit nofile=65536 EOF #--default-ulimit有bug,暂时无法放到/etc/docker/daemon.json里 mkdir -p /etc/docker/ mkdir -p /srv/docker/ cat > /etc/docker/daemon.json << EOF { "dns": [ "114.114.114.114", "8.8.8.8" ], "data-root": "/srv/docker/", "hosts": [ "unix:///var/run/docker.sock" ], "registry-mirrors": [ "https://0sr73mco.mirror.aliyuncs.com" ], "insecure-registries": [ "reg.yujianbo.vip" ] } EOF # "hosts": ["unix:///var/run/docker.sock","tcp://127.0.0.1:2375"], #"registry-mirrors": ["https://registry.docker-cn.com"],中国docker hub专用地址,docker官方提供 systemctl daemon-reload systemctl start docker systemctl enable docker docker info docker version
2.安装docker-compose
yum -y install python-pip
pip install --upgrade pip
pip install docker-compose
docker-compose version
3.下载Harbor离线安装包进行安装
mkdir -p /srv/harbor/ wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.5.2.tgz #去https://github.com/goharbor/harbor/releases查找stable版本,当前最新stable版本是v1.5.2
tar zxf harbor-offline-installer-v1.5.2.tgz cd harbor sed -i "s#hostname = reg.mydomain.com#hostname = reg.yujianbo.vip#g" harbor.cfg #修改harbor的hostname为咱们自定义的reg.yujianbo.vip
sh install.sh #开始自动安装Harbor,直到成功
安装完成后可以通过http://reg.yujianbo.vip访问Harbor,默认账号密码:admin/Harbor12345
你没有公网域名解析的话可以在/etc/hosts中指定reg.yujianbo.vip和ip地址的对应关系
4.使用Harbor push images
docker login reg.yujianbo.vip #输入账号密码
docker pull nginx #从docker hub拉取最新的nginx镜像
docker tag nginx reg.yujianbo.vip/library/nginx docker push reg.yujianbo.vip/library/nginx #将nginx镜像push到我们的harbor的默认的library项目中去
登陆http://reg.yujianbo.vip就可以在项目library中看到我们刚刚push上去的镜像了
5.配置Harbor使用微软的活动目录active directory进行登陆认证
修改配置文件让Harbor使用微软AD进行身份验证ldap://10.1.1.227是微软的DC服务器的地址
cn=test,ou=AAA,dc=local,dc=com test是普通的用户,AAA是自定义建立的OU,dc=local,dc=com是域控制器的域名
LDAP搜索密码是普通用户的密码
LDAP基础DN,指定只有在ou=AAA,dc=local,dc=com里面创建的用户才能登陆Harbor
LDAP用户UID的属性:sAMAccountName
下图是微软的活动目录active directory的用户管理页面,其本质上也是一个LDAP服务器,
我个人比较倾向于将所有支持LDAP的服务都统一使用微软的活动目录active directory进行认证,方便企业管理
这样每个员工之开通一个账号就可以登陆公司的所有系统了,比如gitlab,禅道,路由器,防火墙,SVN,
6.使用阿里云的OSS代替默认的本地文件存储
cat /srv/harbor/common/templates/registry/config.yml ... storage: oss: accesskeyid: 填写你的具有阿里云oss权限账户的RAM的AccessKey ID accesskeysecret: 填写你的具有阿里云oss权限账户的RAM的AccessKey ID region: oss-cn-beijing endpoint: yujianbo-harbor.oss-cn-beijing.aliyuncs.com bucket: yujianbo-harbor secure: false ...
申请一个阿里云的OSS,创建一个bucket: yujianbo-harbor;在oss的信息中可以查看到endpoint地址;
region 需要你确定你是在哪个地区开通的OSS,可以在https://help.aliyun.com/document_detail/31837.html 查询;
使用阿里云oss可以避免存储的单点故障,阿里云oss还具有共享存储的特点
使用其他的存储类型可以参考: https://docs.docker.com/registry/configuration/#storage
7.Harbor服务的维护
如果只是想简单的重启Harbor服务,可以使用如下命令
docker-compose stop
docker-compose start
如果修改的配置文件想让新的配置文件生效,需要如下操作
docker-compose down -v ... vim /srv/harbor/harbor.cfg vim /srv/harbor/common/templates/registry/config.yml ... ./prepare docker-compose up -d
#上面是修改Harbor的配置文件及使用阿里云oss的存储配置文件
docker-compose ps命令可以方面的查看Harbor的各个组件是否正常的启动起来
docker-compose ps Name Command State Ports --------------------------------------------------------------------------------------------------------------------- harbor-adminserver /harbor/start.sh Up (healthy) harbor-db /usr/local/bin/docker-entr ... Up (healthy) 3306/tcp harbor-jobservice /harbor/start.sh Up harbor-log /bin/sh -c /usr/local/bin/ ... Up (healthy) 127.0.0.1:1514->10514/tcp harbor-ui /harbor/start.sh Up (healthy) nginx nginx -g daemon off; Up (healthy) 0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp, 0.0.0.0:80->80/tcp redis docker-entrypoint.sh redis ... Up 6379/tcp registry /entrypoint.sh serve /etc/ ... Up (healthy) 5000/tcp
8.Harbor数据持久化的路径
数据默认存储: /data/
日志默认存储:/var/log/harbor/
9.启动Harbor的https功能
cat /srv/harbor/harbor.cfg ...... #set hostname hostname = reg.yujianbo.vip #set ui_url_protocol ui_url_protocol = https ...... #The path of cert and key files for nginx, they are applied only the protocol is set to https ssl_cert = /data/cert/reg.yujianbo.vip.crt ssl_cert_key = /data/cert/reg.yujianbo.vip.key ......
docker-compose down -v ./prepare docker-compose up -d
#重新生成配置
只需要配置三个地方:
ui_url_protocol = https
ssl_cert = /root/cert/reg.yujianbo.vip.crt
ssl_cert_key = /root/cert/reg.yujianbo.vip.key
10.Email settings
Email settings只是在使用harbor本地认证时,忘记密码或注册账号时用到,使用LDAP认证就不需要配置这个选项了
11.离线安装Notary, Clair and chart repository service
mkdir -p /srv/harbor/ cd /srv/harbor/ wget https://storage.googleapis.com/harbor-releases/release-1.6.0/harbor-offline-installer-v1.6.0-rc2.tgz #去https://github.com/goharbor/harbor/releases查找stable版本,使用v1.6.0-rc2版本,之前版本安装会有问题,等待新的稳定版本 tar zxf harbor-offline-installer-v1.6.0-rc2.tgz cd harbor vim harbor.cfg hostname = reg.yujianbo.vip ui_url_protocol = https ssl_cert = /data/cert/reg.yujianbo.vip.crt ssl_cert_key = /data/cert/reg.yujianbo.vip.key #修改harbor的hostname为咱们自定义的reg.yujianbo.vip,安装Notary必须启用https ./install.sh --with-notary --with-clair --with-chartmuseum #开始自动安装Harbor,直到成功 docker-compose -f ./docker-compose.yml -f ./docker-compose.notary.yml -f ./docker-compose.clair.yml -f ./docker-compose.chartmuseum.yml stop docker-compose -f ./docker-compose.yml -f ./docker-compose.notary.yml -f ./docker-compose.clair.yml -f ./docker-compose.chartmuseum.yml start #普通重启harbor
docker-compose -f ./docker-compose.yml -f ./docker-compose.notary.yml -f ./docker-compose.clair.yml -f ./docker-compose.chartmuseum.yml down -v #vim harbor.cfg ./prepare --with-notary --with-clair --with-chartmuseum docker-compose -f ./docker-compose.yml -f ./docker-compose.notary.yml -f ./docker-compose.clair.yml -f ./docker-compose.chartmuseum.yml up -d #当有配置文件变化时让新的配置文件生效
参考资料:
阅读更多Harbor官网:https://goharbor.io/
Harbor github地址:https://github.com/goharbor/harbor
Harbor安装配置向导:https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md
- docker 私有镜像管理工具harbor 安装
- Docker构建JIRA BUG跟踪管理工具镜像
- 可能是最详细的部署:Docker Registry企业级私有镜像仓库Harbor管理WEB UI
- 安装docker私有镜像库及简易管理工具
- Docker学习笔记四:Docker镜像、容器管理工具shipyard
- 可能是最详细的部署:Docker Registry企业级私有镜像仓库Harbor管理WEB UI
- 可能是最详细的部署:Docker Registry企业级私有镜像仓库Harbor管理WEB UI
- centos7安装docker镜像源管理工具harbor 推荐
- Docker镜像、容器管理-笔记2
- Docker管理工具Web UI:DockerUI & Shipyard
- Docker 管理工具
- 云谈|安装docker管理工具rancher
- centos7 安装harbor docker镜像库
- docker 容器和镜像管理
- docker本地镜像仓库harbor
- 企业级Docker私有仓库Harbor管理平台构建示例
- Docker 生产环境之使用可信镜像 - 为内容信任(content trust)管理密钥
- docker界面图形化管理工具--Shipyard
- docker筑基篇-02-镜像管理
- Docker 开源管理工具集锦