您现在的位置是:首页 >技术交流 >【云原生】私有镜像的解决方案-Harbor管理实战网站首页技术交流

【云原生】私有镜像的解决方案-Harbor管理实战

我是沐风晓月 2023-05-26 04:00:02
简介【云原生】私有镜像的解决方案-Harbor管理实战

前言

通过前面的镜像管理,我们知道docker的开发和运行都离不开镜像管理,如果要进行镜像管理就需要使用镜像仓库。

docker官方提供的镜像仓库是: docker hub, 很方面但从安全和效率的角度考虑,这样的公有镜像环境就无法在企业私有环境中使用了。所以我们今天来探讨下企业中私有镜像的管理-harbor管理实战

🏠个人主页:我是沐风晓月
🧑个人简介:大家好,我是沐风晓月,阿里云社区博客专家😉😉
💕 座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步🍺🍺🍺
💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘

一. Harbor的前世今生

1.1 什么是Harbor

Harbor是由VMware公开开发并开源的企业级的docker镜像管理项目,它包括镜像的权限管理,目录访问,日志审核,界面管理,自我注册,镜像复制和中文支持等功能。

1.2 Harbor的核心组件

  • Proxy(代理):Harbor的组件,如注册表,UI和令牌服务,均位于逆向代理之后。代理将来自浏览器和Docker客户端的请求转发到各种后端服务。
  • Registry(image仓库):负责存储Docker Images和处理Docker pull/push命令。由于Harbor需要强制对imagess进行访问控制,Registry会将客户端引导到令牌服务,以获取每个pull或push请求的有效令牌。
  • Core services(核心服务):Harbor核心职能,主要提供以下服务:
  • UI:用于帮助用户管理Registry Webhook上的Images的图形用户界面:Webhook是在注册表中配置的一种机制,以便Registry中的Images状态更改可以填充到Harbor的Webhook端点。Harbor使用webhook更新日志,启动复制和其他一些功能。
  • 令牌服务:根据用户对项目的作用,负责为每个停靠点pull/push命令发出令牌。如果从Docker客户端发送的请求中没有令牌,则Registry将将请求重定向到令牌服务。数据库:数据库存储项目,用户,角色,复制策略和图像的元数据。
  • Job services(工作服务):用于Images复制,本地映像可以复制(同步)到其他Harbor实例。
  • Log collector(日志收集器):负责在单个地方收集其他模块的日志。

1.3 安装Harbor的环境

  • centos7,需要有可用的网络
  • 关闭防火墙和selinux
[root@mufenggrow ~]# systemctl stop firewalld
[root@mufenggrow ~]# setenforce 0
  • 设置hosts的一对一映射关系
[root@mufenggrow ~]# cat >>/etc/hosts<<EOF
> 192.168.1.41 mufenggrow
> EOF
[root@mufenggrow ~]# tail -1 /etc/hosts
192.168.1.41 mufenggrow
[root@mufenggrow ~]# 

二. 安装Habor前的准备工作

2.1 安装docker

如果你的docker还没有安装,请参考: CentOS7系统安装最新版本docker实战
如果你想离线安装docker,可以参考:CentOS7操作系统离线安装docker

确保你的docker是启动状态:
在这里插入图片描述

2.2 安装docker compose

  1. 从github中下载:

docker compose 是docker的编排工具,可以从github中下载:

[root@mufenggrow ~]# curl -SL https://github.com/docker/compose/releases/download/v2.15.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 42.8M  100 42.8M    0     0  13.2M      0  0:00:03  0:00:03 --:--:-- 18.5M

如果你不确定下载哪个版本可以使用这个命令:

[root@mufenggrow ~]# curl -SL https://github.com/docker/compose/releases/download/v2.15.1/docker-compose-·uname-s`-`uname-m` -o /usr/local/bin/docker-compose

  1. 给docker compose加上可执行权限
[root@mufenggrow ~]# chmod +x /usr/local/bin/docker-compose 
  1. 确定docker compose版本的信息:
[root@mufenggrow ~]# docker-compose version
Docker Compose version v2.15.1

三. 安装Harbor

3.1 从github中下载harbor文件

Harbor的压缩包下载地址:https://github.com/goharbor/harbor/releases

wget https://github.com/goharbor/harbor/releases/download/v2.5.6/harbor-offline-installer-v2.5.6.tgz

3.2 解压

使用tar命令解压即可:

[root@mufenggrow ~]# tar xf harbor-offline-installer-v2.5.6.tgz 
[root@mufenggrow ~]# ls
anaconda-ks.cfg  harbor-offline-installer-v2.5.6.tgz  公共  视频  文档  音乐
harbor           initial-setup-ks.cfg                 模板  图片  下载  桌面
[root@mufenggrow ~]# 

3.3 修改配置

登录到darbor文件中进行修改

这里需要注意:先看一下文件,这里跟以前的版本已经不一样了,没有了harbor.cfg文件。
我们需要copy一个harbor.yml文件进行修改
在这里插入图片描述

[root@mufenggrow harbor]# cp harbor.yml.tmpl harbor.yml

修改yml文件:

  • 修改hostname: IP,必须是固定IP或者域名(不能是127.0.0.1)
  • 修改访问端口8080,默认是80,一般我们80都有其他用处;
  • https我们没有证书,一定注释掉。要不然后面会提示不成功;
  • 修改密码,默认密码是Harbor12345,在这里如果不改,第一次登录也会提示改的。

在这里插入图片描述

密码尽可能不用默认密码
在这里插入图片描述

可选修改:

location: /data/harbor/logs 日志存放
data_volume: /data/harbor 数据存放
说明:修改前必须先创建好目录

3.4 执行install命令

[root@mufenggrow harbor]# ls
common.sh  harbor.v2.5.6.tar.gz  harbor.yml  harbor.yml.tmpl  install.sh  LICENSE  prepare
[root@mufenggrow harbor]# ./install.sh 

若执行过程中出现:

[+] Running 0/1
 ⠿ Network harbor_harbor  Error                                                                           0.2s
failed to create network harbor_harbor: Error response from daemon: Failed to Setup IP tables: Unable to enable SKIP DNAT rule:  (iptables failed: iptables --wait -t nat -I DOCKER -i br-5515db969ebc -j RETURN: iptables: No chain/target/match by that name.
 (exit status 1))

解决方法: 重启下docker,再次运行 ./install.sh

如下图表示安装成功:

在这里插入图片描述

3.5 通过浏览器访问

访问: http://192.168.1.41:8080

下图中,我的IP因为是自动获取,换了个地方后,变成了192.168.1.56,你无须修改IP。

在这里插入图片描述
登录成功之后:

在这里插入图片描述

总结

以上就是Harbor实战的全部内容了,如果对你有用记得点赞收藏哦。

💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!
💕 本文由沐风晓月原创,首发于CSDN博客, 博客主页:mufeng.blog.csdn.net
💕 日拱一卒无尽有,功不唐捐终入海
💕 喜欢的话记得点赞收藏哦

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。