一、概述

Harbor是一个开源的企业级Docker Registry办理东西,它供给了一个安全、牢靠、可扩展的渠道,用于存储、办理和分发Docker镜像。Harbor能够帮助组织和团队更好地办理Docker镜像,并进步应用程序构建和布置的功率。

以下是Harbor的一些首要特点:

  • 安全:Harbor供给了完好的认证和授权机制,支撑LDAP、AD等集成方式,能够让用户更加安全地办理和运用Docker镜像。

  • 牢靠:Harbor供给了多个镜像仓库,支撑仿制和高可用性,确保应用程序的布置和晋级是平滑和无缝的。

  • 可扩展:Harbor是一个可扩展的渠道,能够支撑数千个并发构建和布置,然后满意高流量的应用程序布置需求。

  • 用户友爱:Harbor供给了一个直观、易于运用的Web界面,让用户能够轻松地查找、上传和下载Docker镜像。

  • 灵活性:Harbor供给了一个可定制的渠道,能够依据组织和团队的需求进行自定义装备。

Harbor的布置和运用十分简单,能够运用Docker Compose轻松地在本地环境中布置。Harbor还供给了API和CLI东西,能够方便地与其他DevOps东西集成。Harbor已被广泛采用,并被认为是企业级Docker Registry办理东西的首选之一。

二、Harbor 架构

通过docker-compose 快速部署 harbor

如上图所描绘,Harbor由6个大的模块所组成:

  • Proxy: Harbor的registry、UI、token services等组件,都处在一个反向署理后边。该署理将来自浏览器、docker clients的恳求转发到后端服务上。

  • Registry: 担任存储Docker镜像,以及处理Docker push/pull恳求。因为Harbor强制要求对镜像的拜访做权限操控, 在每一次push/pull恳求时,Registry会强制要求客户端从token service那里取得一个有用的token。

  • Core services: Harbor的中心功用,首要包含如下3个服务:

  • UI:图形界面

  • WebHook:及时获取registry上image状态改变情况,在registry上装备 webhook,把状态改变传递给UI模块。

Token服务:担任依据用户权限给每个docker push/pull指令签发token。Docker 客户端向Registry服务建议的恳求,假如不包含token,会被重定向到这儿,取得token后再从头向Registry进行恳求。

  • Database:为core services供给数据库服务,担任储存用户权限、审计日志、Docker image分组信息等数据。

  • Job services: 首要用于镜像仿制,本地镜像能够被同步到远程Harbor实例上。

  • Log collector: 担任搜集其他组件的日志到一个地方。

三、前期预备

1)布置 docker

# 装置yum-config-manager装备东西
yum -y install yum-utils
# 建议运用阿里云yum源:(引荐)
#yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 装置docker-ce版本
yum install -y docker-ce
# 发动并开机发动
systemctl enable --now docker
docker --version

2)布置 docker-compose

curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version

四、开端布置 Harbor

GitHub地址:github.com/goharbor/ha…

通过docker-compose 快速部署 harbor

1)下载Harbor的Docker Compose文件

在GitHub上获取Harbor的Docker Compose文件,其中包含了必需的服务和装备文件。您能够运用以下指令在终端中进行下载:

export HARBOR_VERSION=2.5.6
wget https://github.com/goharbor/harbor/releases/download/v${HARBOR_VERSION}/harbor-offline-installer-v${HARBOR_VERSION}.tgz
tar xvf harbor-offline-installer-v${HARBOR_VERSION}.tgz
cd harbor

2)修改装备

1、hostname改为本机hostname或许本机IP 2、把http的端口改为自己想要映射的端口, 3、去掉https

cp harbor.yml.tmpl harbor.yml
# vim harbor.yml
hostname: {自己服务器的ip 内网外网都能够}
# htp related config
http:
# port for htp, default is 80. If htps enabled, this port will redirect to htps port
port: {自定义端口}
# https related config
#https:
  # https port for harbor, default is 443
#  port: 443
  # The path of cert and key files for nginx
#  certificate: /your/certificate/path
#  private_key: /your/private/key/path

3)开端装置

# 下载镜像,生成装备文件(可选)
# bash prepare
# 通过上面的指令生成的装备文件就能够通过 docker-compose up -d 发动服务
# 开端装置,包含了生成装备、下载镜像、和发动服务
bash install.sh

4)装置完成后会在当前目录自动生成docker-compose.yml文件

# 检查
docker-compose ps
# 再次装置,就能够履行以下指令
# docker-compose up -d
# 或许履行下面这句
# docker-compose up -f docker-compose.yml -d
# 中止
# docker-compose down

通过docker-compose 快速部署 harbor
拜访:http://ip:port 账号/密码:admin/Harbor12345
通过docker-compose 快速部署 harbor

5)客户端docker装备私有镜像仓库

1、装备

修改/etc/docker/daemon.json文件,增加下面一行:

# "insecure-registries":["ip:port"],
# 示例装备如下:
{
  "registry-mirrors": ["https://hccwwfjl.mirror.aliyuncs.com"],
  "insecure-registries": ["local-168-182-110:80"]
}

重启容器

systemctl daemon-reload
systemctl restart docker

2、推送和拉取镜像常用操作

1、先登录harbor

# docker login ip:prot -u xxx -p xxx
docker login 192.168.182.110:80 -u admin
Harbor12345

通过docker-compose 快速部署 harbor

2、会提示登录成功,然后进行tag

# docker tag image_id(本地需求push的镜像) ip:port/项目名/保存的镜像名(例如:xxx:version1)
docker tag goharbor/harbor-exporter:v2.5.6 local-168-182-110:80/library/goharbor/harbor-exporter:v2.5.6

3、推送

# docker push ip:port/项目名/保存的镜像名(例如:xxx:version1)
docker push local-168-182-110:80/library/goharbor/harbor-exporter:v2.5.6

这样就能够在harbor上看到对应项目下会多出一个xxx:version1镜像了

4、拉取镜像

# docker pull ip:port/项目名/保存的镜像名(例如:xxx:version1)
docker pull local-168-182-110:80/library/goharbor/harbor-exporter:v2.5.6

通过docker-compose 快速布置 harbor解说就先到这儿了,有任何疑问欢迎给我留言,后续会持续更新相关技术文章,可重视我的大众号【大数据与云原生技术共享】加群沟通或私信咨询~

通过docker-compose 快速部署 harbor