1. Harbor概述

Habor是由VMWare公司开源的容器镜像仓库。事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色的访问控制,AD/LDAP集成以及审计日志等,足以满足基本企业需求。
官方地址:https://vmware.github.io/ https://vmware.github.io/harbor/cn/
github地址:https://github.com/goharbor/harbor

组件 功能
harbor-adminserver 配置管理中心
harbor-db Mysql数据库
harbor-jobservice 负责镜像复制
harbor-log 记录操作日志
harbor-ui Web管理页面和API
nginx 前端代理,负责前端页面和镜像上传/下载转发
redis 会话
registry 镜像存储

2. harbor部署

Harbor安装有3种方式:
1、在线安装:从Docker Hub下载Harbor相关镜像,因此安装软件包非常小
2、离线安装:安装包包含部署的相关镜像,因此安装包比较大
3、OVA安装程序:当用户具有vCenter环境时,使用此安装程序,在部署OVA后启动Harbor

2.1. 安装Docker Compose 部署harbor仓库的依赖

安装Docker Compose
curl -L “https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose

下载github下载太慢从阿里镜像上下载
https://mirrors.aliyun.com/docker-toolbox/
# 安装

  1. wget https://mirrors.aliyun.com/docker-toolbox/linux/compose/1.21.2/docker-compose-Linux-x86_64
  2. mv docker-compose-Linux-x86_64-1.21.2.txt /usr/local/bin/docker-compose
  3. chmod +x /usr/local/bin/docker-compose

官网下载方式:
https://docs.docker.com/compose/install/
image.png

2.2. 部署harbor

github下载太慢从国内码云上下载https://gitee.com/mirrors
安装harbor
wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.6.1.tgz
wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.0.tgz

tar zxvf harbor-offline-installer-v1.5.1.tgz
cd harbor
# 修改配置文件
vi harbor.cfg
hostname = 10.206.240.188
ui_url_protocol = http
harbor_admin_password = 123456
# 安装
./prepare
./install.sh

检查
docker-compose ps

  1. [root@centos7 harbor]# docker-compose ps
  2. Name Command State Ports
  3. -------------------------------------------------------------------------------------------------------------------------------------
  4. harbor-adminserver /harbor/start.sh Up (healthy)
  5. harbor-db /usr/local/bin/docker-entr ... Up (healthy) 3306/tcp
  6. harbor-jobservice /harbor/start.sh Up (healthy)
  7. harbor-log /bin/sh -c /usr/local/bin/ ... Up (healthy) 127.0.0.1:1514->10514/tcp
  8. harbor-ui /harbor/start.sh Up (healthy)
  9. nginx nginx -g daemon off; Up 0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp, 0.0.0.0:80->80/tcp
  10. registry /entrypoint.sh serve /etc/ ... Up (healthy) 5000/tcp

浏览器访问
image.png

2.3. harbor启动

docker-compose up -d

3. harbor基本使用

3.1. 推送镜像到harbor 推送方法

image.png
image.png

3.2. harbor创建推送时所使用的用户

image.png

3.3. 将用户添加到仓库权限中

image.png
image.png

3.4. 配置docker

配置http镜像仓库可信任

vim /etc/docker/daemon.json
{
"registry-mirrors": ["http://f1361db2.m.daocloud.io"],
"insecure-registries": ["http://10.0.0.201"]
}

重启docker
systemctl restart docker

启动harbor 遇到的问题说明:如harbor启动后无法访问,先关闭harbor注意观察harbor的所有容器是否成功关闭,没有关闭使用docker命令关闭,若多次关闭失败使用docker命令强制删除镜像
docker-compose up -d

检查是否都启动成功
docker-compose ps

登陆harbor用户
docker login 10.0.0.201

[root@centos7 ~]# docker login 10.0.0.201
Username: chenjinhang
Password: 
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

3.5. 推送镜像到harbor仓库

制作仓库使用的tag 并推送到habor仓库
# 制作仓库使用的tag
docker tag nginx:v1 10.0.0.201/library/nginx:v1

推送镜像
docker push 10.0.0.201/library/nginx:v1

[root@centos7 ~]# docker push 10.0.0.201/library/nginx:v1
The push refers to repository [10.0.0.201/library/nginx]
e502281f6f6e: Pushed 
329d2d1996d2: Pushed 
877b494a9f30: Pushed 
v1: digest: sha256:69258a39e7978afdce9b17d2f7009d34e2bc1f8668c22e77b8ac73e9511b0389 size: 953

3.6. 浏览器检查镜像仓库中是否推送成功

image.png

3.7. 用户权限说明

对整个harbor具有管理权限
image.png
推送 下载 删除 权限
image.png
推送 下载 权限
image.png