博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker镜像仓库搭建 图形化Harbor
阅读量:2337 次
发布时间:2019-05-10

本文共 3152 字,大约阅读时间需要 10 分钟。

从安全和效率等方面考虑,部署在私有环境内的 Registry 是非常必要的,这里我是用的是Harbor这款VMware 公司中国团队为企业用户设计的 Registry server 开源项目

一:简介

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

镜像的存储harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。harbor在docker distribution的基础上增加了一些安全、访问控制、管理的功能以满足企业对于镜像仓库的需求。harbor以docker-compose的规范形式组织各个组件,并通过docker-compose工具进行启停。

docker的registry是用本地存储或者s3都是可以的,harbor的功能是在此之上提供用户权限管理、镜像复制等功能,提高使用的registry的效率。Harbor的镜像拷贝功能是通过docker registry的API去拷贝,这种做法屏蔽了繁琐的底层文件操作、不仅可以利用现有docker registry功能不必重复造轮子,而且可以解决冲突和一致性的问题。

 

二:Harbor架构

 

三:主要组件

  • 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数据。

 

四:安装

实验环境

CentOS Linux release 7.7.1908 (Core)

Docker version 19.03.5, build 633a0ea

docker-compose version 1.25.0, build b42d419

注:由于Harbor是基于Docker Registry V2版本,所以就要求Docker版本不小于1.10.0,Docker-compose版本不小于1.6.0

yum -y install docker-compose

如果安装不上就先安装epel-release源,然后安装docker-compose,yum安装的docker-compose比pip 安装的版本要低

 

安装Harbor

因为是在内网使用所以没有使用https模式

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

cd harbor

vim harbor.yml

  • 5 hostname: 192.168.2.100
  • 27 harbor_admin_password: 123456

hostname  设置访问地址。可以使用ip、域名、主机名,不可以设置为127.0.0.1或localhost。(如果部署的是备份库,填写ip而不是域名,否则会导致仓库管理连接失败,host无法识别原因不明)

 

检测并创建harbor需要文件

./prepare(这部如果不需要HTTPS就不要做,不然没有做证书的情况下HTTP无法登录)

安装

./install.sh

 

Harbor安装就完成了 在浏览器验证

 

向仓库中推送一个本地的镜像

获得推送镜像的地址

  • 1 进入相应的项目
  • 2 library是进入的项目名称
  • 3 点击镜像仓库
  • 4 点击推送镜像
  • 5 这个地址是推送镜像需要的地址

 

给要推送的镜像打标签

docker tag b534869c81f0 192.168.2.101/library/busybox:v1

  • dcf9ec9265e0 :镜像ID
  • 192.168.2.100/library/ : 推送路径
  • redis:v1 推送后镜像的名称v1是标签

向 Harbor推送

推送前先要登录Harbor

因为Docker现在login方式默认为Https如果Harbor没有配置成Https方式,需要修改docker配置文件

vim /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://192.168.2.102 --insecure-registry=192.168.2.0/23

在ExecStart行添加 --insecure-registry=192.168.2.0/23

修改完成后重启Docker和Docker-compose

  • systemctl daemon-reload
  • systemctl restart docker.service
  • docker-compose stop
  • docker-compose up -d

 

或修改/etc/docker/daemon.json

vim /etc/docker/daemon.json

"insecure-registries": ["192.168.2.41:5000"]

insecure-registries": ["192.168.2.41"] : 仓库认证地址

live-restore": true  :  容器随docker启动

重启docker

systemctl restart docker.service

 

登录

docker login 192.168.2.101

 

向Harbor推送制作好的镜像

docker push 192.168.2.101/library/busybox:v1

 

 

 

 

 

 

 

转载地址:http://mmepb.baihongyu.com/

你可能感兴趣的文章
判断程序执行用户和活动用户是否一致
查看>>
Com引起计数
查看>>
IHTMLDocument2 IE浏览器编程
查看>>
C/C++中指针和引用之相关问题研究
查看>>
一些AIX问题,自动logout
查看>>
AIX操作系统及HACMP群集系统安装步骤
查看>>
AIX资源监控与调制工具
查看>>
aix里面怎么查看实际的磁盘空间
查看>>
银行AIX日常维护内容
查看>>
AIX 安全命令
查看>>
AIX故障定位
查看>>
AIX运行级别介绍
查看>>
Linux zombie进程
查看>>
Linux 的僵尸(zombie)进程
查看>>
linux chmod 命令详解 改变文件属性
查看>>
并发编程实战学习笔记(九)-显式锁
查看>>
并发编程实战学习笔记(十)-构建自定义的同步工具
查看>>
并发编程实战学习笔记(十一)-原子变量与非阻塞同步机制
查看>>
分布式系统的事务处理
查看>>
硅胶制品为何丝印后字符会掉?
查看>>