Docker ----部署Harbor私有仓库

一:介绍Harbor

Harbor是由VMware公司开源的企业级的Docker Registry管理项目,相比docker官方拥有更丰富的权限权利和完善的架构设计,适用大规模docker集群部署提供仓库服务。它主要提供 Dcoker Registry 管理界面UI,可基于角色访问控制,镜像复制,AD/LDAP 集成,日志审核等功能,完全的支持中文。

1、特点
  • RBAC 基于角色的权限控制( 是实施面向企业安全策略的一种有效的访问控制方式 )
  • 基于策略的镜像复制
  • 漏扫
  • LADP/AD支持
  • 镜像删除和垃圾清理
  • Notary镜像签名
  • 用户界面
  • 审计
  • RESful api
  • 安装简单(基于compose)
2、架构组成
  • Proxy:通过一个前置的反向代理统一接受浏览器,Docker客户端的请求,并将请求转发给后端不同的服务
  • Registry:负责存储 Docker 镜像,并处理 docker push/pull 命令
  • Core services:Harbor的核心功能,包括 UI、webhook、token 服务
  • Database:为 core services 提供数据库服务
  • Log collector:负责收集其他组件的 log,供日后进行分析

二:部署Harbor

  • 环境准备

两台centos7虚拟机

Harbor服务端(192.168.48.149):搭建私有仓库;需安装 docker-compose、Harbor

client客户端(192.168.48.138):用于远程访问私有仓库;两台都必须先部署好docker环境。

  • 实验步骤

在 harbor服务端配置

1、上传harbor所需软件包并解压
[root@localhost ~]# rz     ‘上传harbor 、docker-compose包’
[root@localhost ~]# cp docker-compose /usr/bin      ‘将docker-compose 复制到/bin目录下便于系统识别’
[root@localhost ~]# tar zvxf harbor-offline-installer-v1.2.2.tgz -C /usr/local/

docker desktop 部署 mysql docker desktop 部署harbor_上传

可自行下载,所需包链接:https://pan.baidu.com/s/1_Sh4e60grDFXBVO3BYOq9Q
提取码:bwhy

2、修改harbor参数文件harbor.cfg
[root@localhost ~]# cd /usr/local/harbor/
[root@localhost harbor]# vim harbor.cfg

docker desktop 部署 mysql docker desktop 部署harbor_docker_02

3、开启harbor
[root@localhost harbor]# sh install.sh
‘install.sh会直接调用docker-compose.yml,进行编排容器服务’
4、查看镜像和容器是否启动
[root@localhost harbor]# docker images      ‘查看镜像’
[root@localhost harbor]# docker ps -a       ‘查看容器’
[root@localhost harbor]# docker-compose ps   ‘查看容器,在harbor目录下使用’
‘可正常开启,容器呈UP状态’

docker desktop 部署 mysql docker desktop 部署harbor_上传_03

5、在浏览器中输入harbor服务器的IP地址

用户名:admin
密 码:Harbor12345

docker desktop 部署 mysql docker desktop 部署harbor_部署harbor私有仓库_04

点击“+项目”,新建一个项目,测试私有仓库的上传和下载

docker desktop 部署 mysql docker desktop 部署harbor_部署harbor私有仓库_05

6、终端登录Harbor
[root@localhost harbor]# docker login -u admin -p Harbor12345 http://127.0.0.1/
7、在公有仓管下载镜像
[root@localhost harbor]# docker pull nginx
‘docker pull :如果不指定节点IP,默认会从docker 官方仓库下载’
8、上传nginx镜像到私有仓库
[root@localhost harbor]# docker tag nginx:latest 127.0.0.1/test01/nginx:v1        ‘定义镜像版v1’
[root@localhost harbor]# docker push 127.0.0.1/test01/nginx
查看harbor镜像是否上传成功

docker desktop 部署 mysql docker desktop 部署harbor_私有仓库_06

在client客户端配置

1、客户端远程访问管理harbor
[root@localhost ~]# vim /usr/lib/systemd/system/docker.service

docker desktop 部署 mysql docker desktop 部署harbor_上传_07

[root@localhost ~]# systemctl daemon-reload    ‘重载’
[root@localhost ~]# systemctl restart docker   ‘重启’
2、登录
[root@localhost ~]# docker login -u admin -p Harbor12345 http://192.168.48.149

docker desktop 部署 mysql docker desktop 部署harbor_docker_08

3、下载私有仓库镜像
[root@localhost ~]# docker pull 192.168.48.149/test01/nginx:v1

docker desktop 部署 mysql docker desktop 部署harbor_上传_09

进入harbor可查看到下载和日志信息

docker desktop 部署 mysql docker desktop 部署harbor_私有仓库_10

4、先从共有仓库下载cirros镜像
[root@localhost ~]# docker pull cirros
[root@localhost ~]# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
192.168.48.149/test01/nginx   v1                  602e111c06b6        3 days ago          127MB
cirros                        latest              3c82e4d066cf        7 weeks ago         12.6MB
5、修改标签并上传镜像到私有仓库
[root@localhost system]# docker tag cirros:latest 192.168.48.149/test01/cirros:v1
[root@localhost system]# docker push 192.168.48.149/test01/cirros:v1
到harbor查看,cirros镜像上传到私有仓库的项目中

docker desktop 部署 mysql docker desktop 部署harbor_docker_11

在harbor上配置

Harbor私有仓库可以使用docker-compose进行管理。

1、私有仓库管理
[root@localhost harbor]# docker-compose down -v    ‘关闭所有容器’

docker desktop 部署 mysql docker desktop 部署harbor_私有仓库_12

2、修改参数文件,看实际需求
[root@localhost harbor]# ./prepare
‘如修改所需参数,需要重新运行install.sh,如修改可选参数,则需运行脚本 ./prepare 将配置文件内容进行重新生效’

[root@harbor harbor]# docker-compose up -d     	   ‘启动所有容器服务’‘不要关闭防火墙’

docker desktop 部署 mysql docker desktop 部署harbor_docker_13

创建Harbor用户

docker desktop 部署 mysql docker desktop 部署harbor_docker_14

给创建的用户添加权限

docker desktop 部署 mysql docker desktop 部署harbor_上传_15

在客户端操作

1、使用新用户登录,先要登出admin账户
[root@localhost ~]# docker logout 192.168.48.149
2、使用新的用户登录
[root@localhost system]# docker login 192.168.48.149

docker desktop 部署 mysql docker desktop 部署harbor_上传_16


在之后的实验过程中,可以用新的用户进行镜像的上传和下载等操作。