Rootop 服务器运维与web架构

docker私库harbor配置

harbor介绍(复制来的):

Harbor是VMware公司开源了企业级Registry项目, 其的目标是帮助用户迅速搭建一个企业级的Docker registry服务。它以Docker公司开源的registry为基础,额外提供了如下功能:
基于角色的访问控制(Role Based Access Control)
基于策略的镜像复制(Policy based image replication)
镜像的漏洞扫描(Vulnerability Scanning)
AD/LDAP集成(LDAP/AD support)
镜像的删除和空间清理(Image deletion & garbage collection)
友好的管理UI(Graphical user portal)
审计日志(Audit logging)
RESTful API
部署简单(Easy deployment)

项目地址:https://github.com/goharbor/harbor
从release里下载Harbor online installer 离线安装版。
目前最新版下载地址为:https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-online-installer-v1.7.4.tgz

1、先安装docker及docker-compose(harbor部署脚本通过服务编排实现),过程略。
# 解压 harbor

[root@localhost ~]# tar zxvf harbor-online-installer-v1.7.4.tgz

# 编辑 harbor.cfg 只修改下面几行即可

[root@localhost harbor]# vi harbor.cfg
hostname = hub.xxx.com  # 绑定自己的域名,便于docker pull \ push的时候输入地址。
ui_url_protocol = https # 启用https协议,否则docker在pull的时候会提示http不安全需要https(要么每个docker机器手动加入信任,嫌弃麻烦)。
ssl_cert = /data/cert/214290856400784.pem  # ssl公钥,这里直接用阿里云颁发的免费域名证书(原先配置文件里是crt文件,pem也可以)
ssl_cert_key = /data/cert/214290856400784.key # ssl私钥,这俩证书服务编排的时候会加载到容器的nginx中。
secretkey_path = /data  # 秘钥路径
harbor_admin_password = 111111  # web界面登陆admin用户的密码

# 创建秘钥目录,把阿里云的证书文件放进去

[root@localhost harbor]# mkdir -p /data/cert
[root@localhost harbor]# ll /data/cert/
total 8
-rw-r--r-- 1 root root 1678 Apr  2 09:53 214290856400784.key
-rw-r--r-- 1 root root 3662 Apr  2 09:53 214290856400784.pem

# 开始服务编排

[root@localhost harbor]# sh install.sh
成功后会显示
----Harbor has been installed and started successfully.----

Now you should be able to visit the admin portal at https://hub.xxx.com. 
For more details, please visit https://github.com/goharbor/harbor .

访问 https://hub.xxx.com 默认用户名 admin,密码上面设置的。

左上侧有个项目菜单,新建项目 可以用来区分不同的项目所用到的镜像,便于分类管理。
我这里新建了一个test项目(注意不要公开,否则任何人知道地址后都可以拉取了),测试上传镜像。

# 给本地镜像打标签并push到私库

[root@localhost ~]# docker tag 45d8d2f74278 hub.xxx.com/test/java8:0402 # 这个地方注意加上test(等于项目是一个目录) 0402是标记TAG,今天的日期便于区分
[root@localhost ~]# docker images
REPOSITORY                                  TAG                 IMAGE ID            CREATED             SIZE
docker.io/registry                          latest              f32a97de94e1        3 weeks ago         25.8 MB
docker.io/goharbor/redis-photon             v1.7.4              611d1ead0a28        4 weeks ago         99.7 MB
docker.io/goharbor/harbor-registryctl       v1.7.4              723aed7bbf8d        4 weeks ago         102 MB
docker.io/goharbor/registry-photon          v2.6.2-v1.7.4       f4743bd7b0d9        4 weeks ago         86.7 MB
docker.io/goharbor/nginx-photon             v1.7.4              dda34e6afafe        4 weeks ago         35.9 MB
docker.io/goharbor/harbor-log               v1.7.4              bf4916eef530        4 weeks ago         81.4 MB
docker.io/goharbor/harbor-jobservice        v1.7.4              1b6a0445ae9c        4 weeks ago         84.1 MB
docker.io/goharbor/harbor-core              v1.7.4              e603b8750d26        4 weeks ago         95.6 MB
docker.io/goharbor/harbor-portal            v1.7.4              2ca1d845cafa        4 weeks ago         40.6 MB
docker.io/goharbor/harbor-adminserver       v1.7.4              5706c65d65dc        4 weeks ago         72.3 MB
docker.io/goharbor/harbor-db                v1.7.4              08d163f732f3        4 weeks ago         136 MB
hub.xxx.com/java8                           0402                45d8d2f74278        5 months ago        1.21 GB
hub.xxx.com/java8                           latest              45d8d2f74278        5 months ago        1.21 GB
hub.xxx.com/test/java8                      0402                45d8d2f74278        5 months ago        1.21 GB

# 登陆私库测试推送

[root@localhost harbor]# docker login -u admin -p 111111 hub.xxx.com
Login Succeeded
[root@localhost ~]# docker push hub.xxx.com/test/java8:0402
The push refers to a repository [hub.xxx.com/test/java8]
5f70bf18a086: Pushed 
bba5ae3ca8bd: Pushed 
28a4db706758: Pushed 
8215ed96e346: Pushed 
6831dc86bfcf: Pushed 
4cdc463b402d: Pushed 
0402: digest: sha256:318cce2a9d4dfccf96c74ac1f6a146406950d961dd96da6b5cc187e034ca29c4 size: 3641

刚开始还挺纠结这个作者名字从哪里来的,后来一想是当时用dockerfile构建镜像时配置文件里MAINTAINER这个参数控制的。这个镜像还是2018年在docker1.7.1版本下做的。

# 退出登陆,测试未登录状态下能否拉取私库镜像

[root@localhost harbor]# docker logout hub.xxx.com
Removing login credentials for hub.xxx.com
[root@localhost harbor]# docker pull hub.xxx.com/test/java8:0402
Trying to pull repository hub.xxx.com/test/java8 ... 
repository hub.xxx.com/test/java8 not found: does not exist or no pull access

提示镜像不存在或没有拉取权限。

系统管理 里面的功能暂未研究。

原创文章,转载请注明。本文链接地址: http://www.rootop.org/pages/4293.html

作者:Venus

专注于 服务器运维与web架构 E-mail:venus#rootop.org

评论已关闭。