Harbor

 Harbor是构建企业级私有docker镜像的仓库的开源解决方案,它是Docker Registry的更高级封装,
 它除了提供友好的Web UI界面,角色和用户权限管理,用户操作审计等功能外,它还整合了K8s的插件(Add-ons)仓库,即Helm通过chart方式下载,管理,安装K8s插件,而chartmuseum可以提供存储chart数据的仓库【注:helm就相当于k8s的yum】。另外它还整合了两个开源的安全组件,一个是Notary,另一个是Clair,Notary类似于私有CA中心,而Clair则是容器安全扫描工具,它通过各大厂商提供的CVE漏洞库来获取最新漏洞信息,并扫描用户上传的容器是否存在已知的漏洞信息,这两个安全功能对于企业级私有仓库来说是非常具有意义的。

一、搭建Harbor私有仓库

Harbor私有仓库和Registry私有仓库相比,功能强大很多,并且支持web图形化管理,所以在企业中非常受到欢迎!

1)案例描述
两台docker服务器,dockerA创建Harbor私有仓库,dockerB用于测试!
Docker搭建私有仓库之Harbor
Docker搭建私有仓库之Harbor
Docker搭建私有仓库之Harbor
Docker搭建私有仓库之Harbor
Docker搭建私有仓库之Harbor
1、DockerA服务器的操作


[root@dockerA ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
//下载docker-compose工具所需的依赖(部署docker环境时,就可以安装了)
[root@dockerA ~]# curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
//下载docker-compose工具
[root@dockerA ~]#  chmod +x /usr/local/bin/docker-compose
[root@dockerA ~]# docker-compose -v           
docker-compose version 1.25.0, build 0a186604
//查看docker-compose工具版本信息,确保已经安装成功

配置Harbor
同样也是上github官网搜索,找到相应的版本即可,这里就不多做截图了!
网址:https://github.com/goharbor/harbor/releases
如图:
Docker搭建私有仓库之Harbor


[root@dockerA ~]# wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.4.tgz
//下载harbor软件包
[root@dockerA ~]# tar zxf harbor-offline-installer-v1.7.0.tgz -C /usr/local
[root@dockerA ~]# cd /usr/local/harbor/
[root@dockerA harbor]# vim harbor.cfg 
//编写其配置文件,其他版本默认是cfg结尾的,这个版本是yml结尾的,文件内容都一样的
hostname=192.168.45.129                 //更改其为本机的IP地址
harbor_admin_password: Harbor12345        
//这一行原本就是存在,不需要自行填写,只需记得它的用户名和密码即可,有需要可以自行进行修改
[root@dockerA harbor]# ./install.sh               //执行安装脚本

Docker搭建私有仓库之Harbor

[root@dockerA harbor]# vim /usr/lib/systemd/system/docker.service 
//编写docker主配置文件
 ExecStart=/usr/bin/dockerd --insecure-registry 192.168.45.129
 //跟registry差不多,主要harbor配置文件中没有填写端口号,这里也可添加,否则可能会出现错误
[root@dockerA harbor]# systemctl daemon-reload 
[root@dockerA harbor]# systemctl restart docker           //重新启动docker服务
[root@dockerA harbor]# pwd
/usr/local/harbor                         //注意目录,必须在这个目录下
[root@dockerA harbor]# docker-compose start
//使用docker-compose工具启动所有容器(因为在重新启动docker时,所有的容器都已经关闭了)
[root@dockerA harbor]# netstat -anpt | grep 80              //确认80端口在监听
tcp6       0      0 :::80                   :::*                    LISTEN      22871/docker-proxy  

Docker搭建私有仓库之Harbor

客户端访问web页面:
Docker搭建私有仓库之Harbor
Docker搭建私有仓库之Harbor
Docker搭建私有仓库之Harbor
Docker搭建私有仓库之Harbor
上传镜像

仓库搭建完成后,接着在dockerA(harbor)服务器上上传镜像!
[root@dockerA harbor]# docker login -u admin -p Harbor12345 192.168.45.129  
//指定用户名、密码及harbor服务器地址登录
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
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
[root@dockerA ~]# docker tag centos:7 192.168.45.129/test/centos:7
//需要更改镜像名称,test是刚才创建的仓库名称
[root@dockerA ~]# docker push 192.168.45.129/test/centos:7
//向harbor服务器的test仓库上传镜像

上传完成后,如图:
Docker搭建私有仓库之Harbor

二、在dockerB服务器上测试下载镜像

[root@dockerB ~]# vim /usr/lib/systemd/system/docker.service 
//编写docker的主配置文件
 13 ExecStart=/usr/bin/dockerd --insecure-registry 192.168.45.129
//指定harbor服务器的IP地址
[root@dockerB ~]# systemctl daemon-reload 
[root@dockerB ~]# systemctl restart docker       //重新启动docker服务
[root@dockerB ~]#  docker login -u admin -p Harbor12345 192.168.45.129
//登录到harbor服务器
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
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                   //登录成功
[root@dockerB ~]# docker pull 192.168.45.129/test/centos:7
//下载镜像进行测试
[root@dockerB ~]# docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
192.168.45.129/test/centos   7                   b5b4d78bc90c        2 months ago        203MB