Harbor是什么?

还记得Docker Registry么?它是Docker官方提供的镜像仓库,简单易用,一键就可以部署、使用。

虽然看起来不错,但是Registry有些问题需要解决:

  1. 没有图形界面
  2. 没有用户权限控制
  3. 看不到镜像操作记录
  4. 仓库内镜像管理难度大,容易造成空间浪费

卖了个关子,基于Registry现有的问题,VMWare公司开发了Harbor,用来完善Registry的功能,

使用Harbor,你可以:

  • 按项目管理镜像
  • 明确记录用户对镜像仓库项目的操作,包含create、push 、delete,甚至pull!
  • 有图形界面
  • 有用户管理,可以针对项目进行细粒度的权限控制
  • 仓库内的镜像可以在图形界面删除与复制,垃圾清理!
  • 可以同步已有镜像仓库的镜像
  • 有仓库管理 暂时没太关注这是干嘛用的
  • API控制中心!

放几张效果图:

搭建步骤

  • 安装Docker、Docker-compose
  • 下载Harbor离线包
  • 配置harbor.yml
  • 运行 ./install.sh

安装Docker、Docker-compose

安装docker

CentOS安装Docker-ce并配置国内镜像

配置非root用户免sudo使用docker,立即生效

sudo usermod -aG docker 要使用的用户名 && newgrp docker

安装docker-compose

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

sudo chmod +x /usr/local/bin/docker-compose #赋执行权限

下载Harbor离线包

在Github上的仓库地址https://github.com/goharbor/harbor/releases

这里我们下载最新的release v1.8.2版本

[v1.8.2离线版下载链接]https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-offline-installer-v1.8.2.tgz

离线版本相对于online版本,区别是它们都是使用的Docker镜像与Docker-compose工具,不同的是

  • 离线包中包含了所有需要的镜像导出包
  • 在线包中只包含简单的配置文件

离线包占内存比较大,差不多五百多兆,因为我们公司一般是内网的线上环境,这里就直接下载离线包了,您可以选择自己喜欢或需要的版本,以下使用离线包演示

可以直接用命令下载

wget -P /usr/local/src https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-offline-installer-v1.8.2.tgz

这里直接下载到了/usr/local/src中

配置harbor.yml

先进入刚才下载到的目录,解压离线包到/usr/local/harbor下

cd /usr/local/src
tar zxf harbor-offline-installer-v1.8.2.tgz -C /usr/local/
cd /usr/local/harbor/

配置harbor.yml vim harbor.yml, 这里包含必要参数可选参数,这里只记录下必要参数

必要参数

  • hostname:访问的Harbor服务的IP或域名(UI与命令行操作同样生效),不要使用localhost127.0.0.10.0.0.0
  • data_volume: Harbor中的数据挂载对应宿主机的位置,如/home/harbor/data
  • harbor_admin_password: admin管理员密码,默认管理员账号/密码为admin/Harbor12345
  • database: Harbor内部的数据库
    • password: 数据库密码
    • max_idle_conns: 连接池最大保持空闲数
    • max_open_conns: 同时最大开启的连接数
  • jobservice:作业相关的服务
    • max_job_workers: 最大作业worker数
  • log: 日志相关
    • level:日志输出等级
    • local:本地日志保留相关
      • rotate_count: 日志文件在移除之前的旋转次数 Log files are rotated rotate_count times before being removed. If count is 0, old versions are removed rather than rotated.
      • rotate_size: 日志保持大小,超出部分会删除旧日志
      • location: 存储日志的路径
    • external_endpoint:开启此选项,将会把日志转发到syslog服务中
      • protocol:转发协议,默认TCP
      • host: syslog服务的ip
      • port: syslog服务监听的端口号

必要参数基本就这些,如果想配置更仔细些,请参考Github

运行 ./install.sh

cd /usr/local/harbor
./install.sh #运行安装脚本

查看下用到哪些容器 docker-compose ps

到此安装完成

测试与使用Harbor

访问hostname处配置的IP

登录即可访问了,这里使用就不多说了,点点就了解个七七八八了

docker login 与 push 测试

接下来测试下,使用docker push到这个仓库中

推荐再准备一台虚拟机,如果没有的话,可以先在/usr/local/harbor目录下执行docker-compose down -v关闭harbor各容器

推送镜像到非https的仓库时,都需要设置非安全的仓库,vim /etc/docker/daemon.json,如图大家参考下

主要是

{
"insecure-registries": ["192.168.87.139:80"]
}

我这里之前配置了另一个镜像仓库,这里大家看看就好

需要注意的是:刚才配置的hostname后需要写明80端口,如果是域名则不需要

改好后,重启docker服务systemctl restart docker

登录仓库

docker login 192.168.87.139:80

初次登录需要使用用户名与密码,这个是在Harbor用户管理中配置的,admin用户拥有最高权限

这里用本地java:latest镜像举例

#重新tag方能推送
docker tag java:latest 192.168.87.139:80/library/java:latest
#推送镜像
docker push 192.168.87.139:80/library/java:latest

去Harbor的UI界面 -> 项目 -> library

我们点开library/java,可以查看具体的tags

删除本地刚才tag的镜像,我们pull下来试试

#删除本地镜像
docker rmi 192.168.87.139:80/library/java:latest
#pull Harbor镜像仓库中的镜像
docker pull 192.168.87.139:80/library/java:latest

一切正常,后续自我去配置下可选的配置就可以了。

关闭Harbor服务

cd /usr/local/harbor
docker-compose down -v

删除/卸载Harbor

先参考上一小节关闭Harbor服务,关闭Harbor

rm -rf /usr/local/harbor
rm -rf /usr/local/src/harbor

删除镜像这块就需要使用docker rmi了,这里就不多说了,刚才docker-compose ps时有显示用到哪些镜像

后记

本来打算暂时不更新博客的,现在工作需要去看看镜像仓库相关的内容,输出文档,这里就一口气全写出来了,先这样。


本文系Hellxz学习与实践文章,禁止布布扣、码迷、爱码网等第三方爬虫网站爬取,转载请在醒目位置注明出处:https://www.cnblogs.com/hellxz/p/install_harbor.html

安装Harbor管理镜像服务的更多相关文章

  1. Harbor管理镜像

    安装Harbor管理镜像服务   阅读目录 Harbor是什么? 搭建步骤 安装Docker.Docker-compose 下载Harbor离线包 配置harbor.yml 运行 ./install. ...

  2. 安装harbor私有镜像仓库

    有朋友安装harbor的过程中遇到很多问题,为此写一篇最简单安装harbor的文档,希望能帮助所有刚开始接触harbor的新手.harbor的架构不做探究. 实验验环境:os --> cento ...

  3. 第十三篇 一个安装、管理windows服务的桌面程序

    在网上看到一个修改程序入口的程序去把windows 服务修改成控制台的程序,然后利用控制台的程序把服务安装和管理,也想起自己原来也写了一个对windows 报务管理的程序,不过是winform的.   ...

  4. Linux 安装 Harbor 私有镜像仓库

    下载 最新发行:https://github.com/goharbor/harbor/releases # 下载文件 wget https://github.com/goharbor/harbor/r ...

  5. Windows下开启composer镜像服务来安装yii

    网上关于使用composer的安装教程挺多的,但是作为新手的我,觉得好凌乱,不断尝试后,终于安装好了.最后总结出,用开启composer的镜像服务来安装yii是最好的啦,当然,归档文件的做法有利有弊就 ...

  6. Harbor私有镜像仓库(上)

    上图配置为工作环境 特别注意:win10现在不允许使用私有ca证书,到时登录浏览器会失败,可以选用火狐浏览器. 创建自己的CA证书 openssl req -newkey rsa:4096 -node ...

  7. OpenStack-Ocata版+CentOS7.6 云平台环境搭建 — 4.镜像服务(glance)

    节点配置信息说明: 控制节点:controller: IP:192.168.164.128 hostname&hosts:likeadmin 计算加点:Nova: IP:192.168.164 ...

  8. [ Openstack ] OpenStack-Mitaka 高可用之 镜像服务(glance)

    目录 Openstack-Mitaka 高可用之 概述    Openstack-Mitaka 高可用之 环境初始化    Openstack-Mitaka 高可用之 Mariadb-Galera集群 ...

  9. DOCKER学习_016:Docker镜像仓库和HARBOR的简单安装和管理

    一 镜像仓库介绍 1.1 简介 镜像仓库用于存放 Docker镜像 Docker registry提供镜像仓库服务 一个 Docker registry可以包含多个镜像仓库 仓库分为公共镜像仓库与私有 ...

随机推荐

  1. MySQL-EXPLAIN执行计划Extra解释

    EXPLAIN命令输出的列中Extra字段可选值较多,这里单独说一下. 该Extra列 EXPLAIN输出包含MySQL解决查询的额外信息.以下列表说明了此列中可能出现的值.每个项目还指示JSON格式 ...

  2. vue过滤器微信小程序过滤器和百度智能小程序过滤器

    因为最近写了微信小程序和百度小程序,用到了过滤器,感觉还挺好用的,所以就来总结一下,希望能帮到你们. 1. 微信小程序过滤器: 1.1:首先建一个单独的wxs后缀的文件,一般放在utils文件夹里面. ...

  3. 重读《学习JavaScript数据结构与算法-第三版》-第2章 ECMAScript与TypeScript概述

    定场诗 八月中秋白露,路上行人凄凉: 小桥流水桂花香,日夜千思万想. 心中不得宁静,清早览罢文章, 十年寒苦在书房,方显才高志广. 前言 洛伊安妮·格罗纳女士所著的<学习JavaScript数据 ...

  4. 面系那个对象开发原则.高内聚.低耦合+Python安装详细教程+print输出带颜色的方法

    面系那个对象开发原则.高内聚.低耦合 软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准.划分摸块的一个准则就是高内聚低耦合. 这是软件工程中的概念,是判断设计好坏的标准,主要是面向OO的设计, ...

  5. ASP.NET Core[源码分析篇] - WebHost

    _configureServicesDelegates的承接 在[ASP.NET Core[源码分析篇] - Startup]这篇文章中,我们得知了目前为止(UseStartup),所有的动作都是在_ ...

  6. spring-boot-plus更新日志 CHANGELOG(九)

    spring-boot-plus更新日志 CHANGELOG [V1.2.0-RELEASE] 2019.08.06

  7. c语言的图形库

    图形库链接http://www.easyx.cn/ 使用图形库头文件easyx.h或graphics.h 同样在里面下载图形库帮助文档进行查询 vs vc都可使用图形库 图形库窗口: initgrap ...

  8. HDU 2147

    题意略. 思路: 题中提到的3种操作,一个是将长方形的n减少1,一个是将m减少1,一个是将n和m同时减少1,都是将长方形规模减少的的操作. 现在我们可以知道,(1,1)先手必输:(1,2),(2,1) ...

  9. Java多线程之线程的启动

    Java多线程之线程的启动 一.前言 启动线程的方法有如下两种. 利用Thread 类的子类的实例启动线程 利用Runnable 接口的实现类的实例启动线程 最后再介绍下java.util.concu ...

  10. Leetcode之深度优先搜索(DFS)专题-494. 目标和(Target Sum)

    Leetcode之深度优先搜索(DFS)专题-494. 目标和(Target Sum) 深度优先搜索的解题详细介绍,点击 给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S.现在 ...