Harbor仓库搭建管理

简介:

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。

harbor以docker-compose的规范形式组织各个组件,并通过docker-compose工具进行启停。

Registry是Dcoker官方的一个私有仓库镜像,可以将本地的镜像打标签进行标记然后push到以Registry起的容器的私有仓库中。企业可以根据自己的需求,使用Dokcerfile生成自己的镜像,并推到私有仓库中,这样可以大大提高拉取镜像的效率。

 

主要组件

Proxy:对应启动组件nginx。它是一个nginx反向代理,代理Notary client(镜像认证)、Docker client(镜像上传下载等)和浏览器的访问请求(Core Service)给后端的各服务;

UI(Core Service):对应启动组件harbor-ui。底层数据存储使用mysql数据库,主要提供了四个子功能:

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。

Registry:对应启动组件registry。负责存储镜像文件,和处理镜像的pull/push命令。Harbor对镜像进行强制的访问控制,Registry会将客户端的每个pull、push请求转发到token服务来获取有效的token。

Admin Service:对应启动组件harbor-adminserver。是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候需要加载adminserver的配置;

Job Sevice:对应启动组件harbor-jobservice。负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log;

Log Collector:对应启动组件harbor-log。日志汇总组件,通过docker的log-driver把日志汇总到一起;

Volnerability Scanning:对应启动组件clair。负责镜像扫描

Notary:对应启动组件notary。负责镜像认证

DB:对应启动组件harbor-db,负责存储project、 user、 role、replication、image_scan、access等的metadata数据。

 

安装harbor1.8:

环境准备:

centos7 内核是3.10的

docker版本不要直接使用yum安装的低版本,需安装较高的版本,我用的是17.09.0-ce

 

一、配置centos7yum源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum clean all ; yum makecache  

安装扩展源:

yum -y install epel-release

 

二、安装工具包:

yum install -y yum-utils device-mapper-persistent-data lvm2

 

三、安装docker:

卸载之前的旧版本:

yum -y remove docker docker-common

1、rpm安装:

wget https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/docker-ce-17.09.0-ce-1.el7.centos.x86_64.rpm

rpm -ivh  docker-ce-17.09.0-ce-1.el7.centos.x86_64.rpm

 

2、yum安装:

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

yum install -y docker-ce

yum install -y docker-ce-18.09.0-3.el7.x86_64   #你也可以指定具体版本

 

3、启动docker

systemctl start docker

systemctl enable docker

 

四、安装Docker-compose

curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

授予执行权限 :chmod +x /usr/local/bin/docker-compose

查看版本:docker-compose --version

 

五、安装、启动harbor:

wget http://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-offline-installer-v1.8.5.tgz

tar -xf harbor-offline-installer-v1.8.5.tgz

cd harbor ; vim harbor.yml 修改如下配置:

hostname: 172.20.10.10  #修改成本机的ip或者域名

harbor_admin_password: 123456   #设置harbor登录的密码;其他配置项默认即可。

 

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

安装成功会看到:✔ ----Harbor has been installed and started successfully.----

管理命令:docker-compose start | stop | restart

停止docker-compose down   |   启动docker-compose up -d

 

六、登录harbor:

浏览器输入配置文件中的ip或者域名访问:

http://172.20.10.10  输入默认用户名admin  密码123456

 

七、上传下载镜像:

新建项目,test

终端命令登录 docker login   172.20.10.10 输入用户名和密码

登录报错:

Error response from daemon: Get https://172.20.10.10/v2/: dial tcp 172.20.10.10:443: getsockopt: connection refused

排错:

find  /  -name docker.service -type f

vim /usr/lib/systemd/system/docker.service  在ExecStart=/usr/bin/dockerd后加上自己的harbor地址(ip或者域名):

ExecStart=/usr/bin/dockerd --insecure-registry 172.20.10.10

systemctl daemon-reload

systemctl restart docker

重启docker后查看docker进程会看到刚才加入的harbor地址:

再进入到harbor目录重启docker-compose,之后用docker-compose ps查看各组件状态为healthy,再登录成功!

 

上传镜像到harbor:

上传前要修改docker镜像的tag:

docker tag nginx:latest 172.20.10.10/test/nginx:latest  #原镜像前加上harbor的地址和项目

docker push 172.20.10.10/test/nginx:latest  上传镜像,后在harbor test项目里查看到即可。

删除本地镜像,再从harbor上拉取:

 

个人博客:    https://www.wzstyle.cn/