安装Harbor管理镜像服务

 

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时有显示用到哪些镜像

后记

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

Harbor管理镜像的更多相关文章

  1. 安装Harbor管理镜像服务

    Harbor是什么? 还记得Docker Registry么?它是Docker官方提供的镜像仓库,简单易用,一键就可以部署.使用. 虽然看起来不错,但是Registry有些问题需要解决: 没有图形界面 ...

  2. docker企业级镜像仓库Harbor管理

    Harbor概述 Harbor是由VMWare公司开源的容器镜像仓库.事实上,Harbor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括: ...

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

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

  4. Harbor 企业级镜像仓库搭建

    Habor是由VMWare公司开源的容器镜像仓库.事实上,Habor是在Docker Registry上进行了相应的 企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角 ...

  5. harbor私有镜像仓库的搭建与使用与主从复制

    harbor私有镜像仓库,私有仓库有两种,一种是harbor,一种是小型的私有仓库,harbor有两种模式,一种是主 从,一种是高可用仓库,项目需求,需要两台服务器,都有docker.ldap权限统一 ...

  6. 搭建Harbor私有镜像仓库--v1.5.1

     搭建Harbor私有镜像仓库--v1.5.1 1.介绍 Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境 ...

  7. 部署Harbor私有镜像仓库

    Harbor私有镜像仓库无坑搭建 目录 1. harbor介绍 2. docker-ce的安装 3. docker-compose的安装 4. Harbor私有仓库的安装 5. 客户端连接镜像仓库配置 ...

  8. 03: 使用docker搭建Harbor私有镜像仓库

    1.1 harbor介绍 1.Harbor简介 1. Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器. 2. 镜像的存储harbor使用的是官方的docker regi ...

  9. docker部署harbor私有镜像库(3)

    一.harbor介绍 在实际生产运维中,往往需要把镜像发布到几十.上百台或更多的节点上.这时单台Docker主机上镜像已无法满足,项目越来越多,镜像就越来越多,都放到一台Docker主机上是不行的,我 ...

随机推荐

  1. K8S CoreDNS部署失败,发现的一个问题

    K8S CoreDNS部署失败,查看错误日志,提示如下 root >> kubectl get all --all-namespaces -o wide root >> kub ...

  2. 消息队列mq总结

    一.消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构.目前使用较多的消息队列有ActiveMQ,RabbitM ...

  3. 网络编程——TCP协议、UDP协议、socket套接字、粘包问题以及解决方法

    网络编程--TCP协议.UDP协议.socket套接字.粘包问题以及解决方法 TCP协议(流式协议) ​ 当应用程序想通过TCP协议实现远程通信时,彼此之间必须先建立双向通信通道,基于该双向通道实现数 ...

  4. C++贪心算法实现活动安排问题

    问题描述: 设有n个活动的集合E={1,2,…,n},其中,每个活动都要求使用同一资源,而在同一时间内只有一个活动能使用这一资源.每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且s ...

  5. CSP复赛day2模拟题

    没错,我又爆零了.....先让我自闭一分钟.....so 当你忘记努力的时候,现实会用一记响亮的耳光告诉你东西南北在哪. 好了,现在重归正题: 全国信息学奥林匹克联赛(NOIP2014) 复赛模拟题 ...

  6. Android源码分析(十六)----adb shell 命令进行OTA升级

    一: 进入shell命令界面 adb shell 二:创建目录/cache/recovery mkdir /cache/recovery 如果系统中已有此目录,则会提示已存在. 三: 修改文件夹权限 ...

  7. pgsql主备搭建及切换

    二.主从搭建 2.1测试目标 测试postgresql主从搭建安装过程 2.2环境准备 实例级别的复制 流复制主库可读写,但从库只允许查询不允许写人, 而逻辑复制的从库可读写 流复制实验环境 主机 主 ...

  8. CPU和Memory压力测试方法

    一:用原生Centos自带的工具 1. CPU 下面命令会创建 CPU 负荷,方法是通过压缩随机数据并将结果发送到 /dev/null: cat /dev/urandom | gzip -9 > ...

  9. 是否忘记了向源中添加“#include "StdAfx.h"”?

    错误分析 此错误发生的原因是编译器在寻找预编译指示头文件(默认#include "stdafx.h")时,文件未预期结束.没有找到预编译指示信息的头文件"stdafx.h ...

  10. linux socket编程系统调用栈

    目录 一.网络协议参考模型简介 二.SOCKET概述 三.SOCKET基本数据结构 1.TCP通信编程 2.服务器端实例代码 3.客户端实例代码 4.头文件socketwrapper.h 5.程序实现 ...