一、Harbor简介

  Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

二、下载和配置Harbor

#环境说明
系统版本:            CentOS7.x
docker-ce:            18.03.1-ce
docker-compose:        version 1.22.0
Harbor:                v1.7.0
安装方式:            在线安装
安装位置:            /volume1/harbor

安装Harbor需要先安装docker和docker-compose,这里就不演示了。

1.下载安装包

从 github harbor 官网 release 页面下载指定版本的安装包,因为是谷歌的地址,国内下载不了,饭墙下载后在传到服务器上即可。

#在线安装包
$ wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-online-installer-v1.7.0.tgz
$ tar xvf harbor-online-installer-v1.7.0.tgz
#也可以下载下面的文件进行离线安装
https://storage.googleapis.com/harbor-releases/release-1.5.0/harbor-offline-installer-v1.5.0-rc2.tgz

2.配置Harbor

解压缩之后,找到/volume1/harbor/harbor.cfg文件,该文件就是Harbor的配置文件。

vim /usr/local/harbor/harbor.cfg

# hostname设置访问地址,可以使用ip、域名,不可以设置为127.0.0.1或localhost
hostname = 192.168.1.11

# 访问协议,默认是http,也可以设置https,如果设置https,则nginx ssl需要设置on
ui_url_protocol = http

# mysql数据库root用户默认密码root123,实际使用时修改下
db_password = root123

#邮箱根据情况配置,发送重置密码邮件时使用,也可以不配置
email_server = smtp.qinzc.me
email_server_port = 25
email_username = admin@qinzc.me
email_password = 12345678
email_from = admin <admin@qinzc.me>
email_ssl = false

#设置只有管理员可以创建项目
project_creation_restriction = adminonly

# 启动Harbor后,管理员UI登录的密码,默认是Harbor12345
harbor_admin_password = Harbor12345

# 认证方式,这里支持多种认证方式,如LADP、本次存储、数据库认证。默认是db_auth,mysql数据库认证
auth_mode = db_auth

# 是否开启自注册
self_registration = on

# Token有效时间,默认30分钟
token_expiration = 30

# 用户创建项目权限控制,默认是everyone(所有人),也可以设置为adminonly(只能管理员)
project_creation_restriction = everyone

上边根据情况修改,没提到的可以不用管,按默认设置即可。

三、安装Harbor

执行安装脚本

/volume1/harbor/install.sh

修改完配置文件后,在的当前目录执行./install.sh,Harbor服务就会根据当期目录下的docker-compose.yml开始下载依赖的镜像,检测并按照顺序依次启动各个服务,Harbor依赖的镜像及启动服务如下:

root@backup-server:/volume1/harbor # docker images
REPOSITORY                      TAG                 IMAGE ID            CREATED             SIZE
goharbor/chartmuseum-photon     v0.7.1-v1.7.0       666d74cc236a        2 weeks ago         111MB
goharbor/harbor-migrator        v1.7.0              482699d98927        2 weeks ago         799MB
goharbor/redis-photon           v1.7.0              8adff755797f        2 weeks ago         96.1MB
goharbor/clair-photon           v2.0.7-v1.7.0       7e72f6ba05bd        2 weeks ago         165MB
goharbor/notary-server-photon   v0.6.1-v1.7.0       b4a22960dfce        2 weeks ago         102MB
goharbor/notary-signer-photon   v0.6.1-v1.7.0       bb0db7ebd1de        2 weeks ago         99.6MB
goharbor/harbor-registryctl     v1.7.0              1906a8b84fa5        2 weeks ago         101MB
goharbor/registry-photon        v2.6.2-v1.7.0       677f21b09362        2 weeks ago         86.4MB
goharbor/nginx-photon           v1.7.0              6ed96fc73f83        2 weeks ago         35.5MB
goharbor/harbor-log             v1.7.0              722fa4a77846        2 weeks ago         81MB
goharbor/harbor-jobservice      v1.7.0              effd390c0cd4        2 weeks ago         83.8MB
goharbor/harbor-core            v1.7.0              2ebd58ce5638        2 weeks ago         95.2MB
goharbor/harbor-portal          v1.7.0              72a291f86bab        2 weeks ago         40.2MB
goharbor/harbor-adminserver     v1.7.0              9f850341a571        2 weeks ago         72MB
goharbor/harbor-db              v1.7.0              45d94fe5fee5        2 weeks ago         133MB
microbox/dockerui               latest              c3452e32cfe9        3 years ago         10.4MB

root@backup-server:/volume1/harbor # docker-compose ps
       Name                     Command                       State                                         Ports                               

harbor-adminserver   /harbor/start.sh                 Restarting                                                                                
harbor-core          /harbor/start.sh                 Up (health: starting)                                                                     
harbor-db            /entrypoint.sh postgres          Up (healthy)            5432/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-portal        nginx -g daemon off;             Up (healthy)            80/tcp                                                            
nginx                nginx -g daemon off;             Up (healthy)            0.0.0.0:433->443/tcp, 0.0.0.0:4433->443/tcp, 0.0.0.0:80->80/tcp
redis                docker-entrypoint.sh redis …   Up                      6379/tcp                                                          
registry             /entrypoint.sh /etc/regist …   Up (healthy)            5000/tcp                                                          
registryctl          /harbor/start.sh                 Up (healthy)

启动完成后,访问刚设置的hostname设置的即可 进行管理http://192.168.1.11 ,可以修改docker-compose.yml文件更改对应服务的端口映射。 自此私有仓库搭建完毕。
img

img

四、客户端配置

因为docker 默认不支持http方式登陆,所以客户端要以http方式登陆,需修改下配置。

方法一:

vim vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd           –insecure-registry 192.168.1.11 &nbsp;  #增加镜像地址

方法二:
创建/etc/docker/daemon.json文件,在文件中指定仓库地址

# cat > /etc/docker/daemon.json << EOF
{ "insecure-registries":["192.168.1.11"] }
EOF

完成后从载配置,重启docker

systemctl daemon-reload 
systemctl restart docker

五、测试上传和下载镜像

1.客户端登陆

docker login 192.168.1.11
Username (admin): 
Password: 
Login Succeeded

2.创建Dockerfile

vim Dockerfile 
FROM centos:centos7.1.1503
ENV TZ "Asia/Shanghai"

3.创建镜像

docker build -t 192.168.1.11/library/centos7.1:0.1 .

4.把镜像push到Harbor

docker push 192.168.1.11/library/centos7.1:0.1

如果是从其他仓库pull下来的镜像,记得先执行 docker tag 给镜像做tag 才能push,例如:

docker pull busybox
docker tag busybox:latest 192.168.1.11/library/busybox:latest
docker push 192.168.1.11/library/busybox:latest

格式如下:

#docker tag 镜像    域名/项目名称/镜像名:版本docker tag SOURCE_IMAGE[:TAG] 192.168.1.11/library/IMAGE[:TAG]
# docker push 更改tag后的镜像名docker push 192.168.1.11/library/IMAGE[:TAG]

5.登录web页面查看镜像

即可看到刚刚上传的镜像。

img

6.拉取上传到Harbor的镜像

docker pull 192.168.1.11/track/busybox:latest

参考:https://www.cnblogs.com/pangguoping/p/7650014.html