搭建Docker私服镜像仓库Harbor

1、概述

Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。

Harbor 的所有组件都在 Dcoker 中部署,所以 Harbor 可使用 Docker Compose 快速部署。

由于 Harbor 是基于 Docker Registry V2 版本,所以 docker 版本必须 > = 1.10.0 docker-compose >= 1.6.0

Harbor的目标是帮助用户迅速搭建一个企业级的Docker registry服务。它以Docker公司开源的registry为基础,额外提供了如下功能:

  • 基于角色的访问控制(Role Based Access Control)
  • 基于策略的镜像复制(Policy based image replication)
  • 镜像的漏洞扫描(Vulnerability Scanning)
  • AD/LDAP集成(LDAP/AD support)
  • 镜像的删除和空间清理(Image deletion & garbage collection)
  • 友好的管理UI(Graphical user portal)
  • 审计日志(Audit logging)
  • RESTful API
  • 部署简单(Easy deployment)

1.1 架构图

Harbor的每个组件都是以Docker容器的形式构建的,可以使用Docker Compose来进行部署。如果环境中使用了kubernetes,Harbor也提供了kubernetes的配置文件。

Harbor大概需要以下几个容器组成:ui(Harbor的核心服务)、log(运行着rsyslog的容器,进行日志收集)、mysql(由官方mysql镜像构成的数据库容器)、Nginx(使用Nginx做反向代理)、registry(官方的Docker registry)、adminserver(Harbor的配置数据管理器)、jobservice(Harbor的任务管理服务)、redis(用于存储session)。

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,整体架构还是很清晰的。架构图如下:

2、安装docker

Harbor要依赖Docker,所以要先安装,见:Ubuntu20.04安装Docker

3、下载Harbor

访问harbor release page,下载Harbor软件tgz压缩包。

或命令下载

powershell 复制代码
wget https://github.com/goharbor/harbor/releases/download/v2.9.4/harbor-offline-installer-v2.9.4.tgz

4、解压

shell 复制代码
tar -zxvf harbor-offline-installer-v2.9.4.tgz

解压后出现一个 hardor 的文件夹,进去之后查看

此时还没有 harbor.yml 和 docker-compose.yml,复制一份harbor.yml.tmpl ,然后进行修改

shell 复制代码
cp harbor.yml.tmpl harbor.yml

主要改下面地方,填上hostname,port,注释掉https相关

5、安装

在当前 harbor 目录下执行./install.sh

等待安装成功。会出现上面提到的 docker-compose.yml文件,里面包含了harbor依赖的镜像和对应容器创建的信息。

6、安装docker-compose

shell 复制代码
# 安装
curl -L "https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 授权
chmod +x /usr/local/bin/docker-compose

7、执行docker-compose

在harbor的目录下执行以下命令

shell 复制代码
# 启动
docker-compose up -d

# 停止
docker-compose down

启动后使用docker ps -a查看harbor相关容器启动情况(总计9个):

8、访问

根据上面的配置的IP,访问 http://172.28.168.223:5180

默认用户 和登录密码 可以从 harbor.yml 中找到,官网有个地方也有说明

text 复制代码
admin / Harbor12345

登录成功

9、使用

9.1 创建用户和项目

首先有一个 public 的 library 项目,在里面创建对应的用户即可pull 和 push镜像,也可以创建其它项目

9.2 docker配置 harbor

结合docker实现镜像上传和下载,在/etc/docker/daemon.json添加以下内容
IP为harbor的IP地址和端口,端口如果是80可省略

复制代码
# 仓库IP地址和端口,或者是域名,要加上http或https
"insecure-registries":["http://172.28.168.223:5180"],
 "registry-mirrors":["http://172.28.168.223:5180"]
  • registry-mirrors:配置的是阿里云镜像加速,该文的问题不需要配置该项
  • insecure-registries:允许 Docker 客户端连接到没有使用 HTTPS 或使用了自签名证书的 Docker 镜像仓库
    registry-mirrors:必须配置你的harbor仓库!!!否则可能造成,docker login是成功的,但是push镜像时出现相同的问题

重启docker:service docker restart

重启harbor

shell 复制代码
# 停止
docker-compose down

# 启动
docker-compose up -d

9.3 登录仓库

shell 复制代码
docker login -u 'admin' -p 'Harbor12345'  http://172.28.168.223:5180

9.2 上传镜像到harbor

在上传镜像前,需要为镜像打上标签,命令如下:

shell 复制代码
docker tag <image_name> <harbor_host>/<project_name>/<image_name>:<tag>

以redis镜像为例:

shell 复制代码
docker tag redis:5.0.10 172.28.168.223:5180/library/redis:5.0.10

上传镜像,命令如下:

shell 复制代码
docker push <harbor_host>/<project_name>/<image_name>:<tag>

上传redis镜像到harbor

shell 复制代码
docker push 172.28.168.223:5180/library/redis:5.0.10

登录harbor控制台查看,在library项目下有redis镜像

9.3 harbor拉取镜像

先删除上面本地的redis镜像172.28.168.223:5180/library/redis:5.0.10

shell 复制代码
docker rmi 172.28.168.223:5180/library/redis:5.0.10

拉取镜像的命令

shell 复制代码
# image_name是要拉取的镜像名称,project_name是Harbor中的项目名称,tag是镜像的版本号
docker pull <harbor_host>/<project_name>/<image_name>:<tag>

拉取redis镜像

shell 复制代码
docker pull 172.28.168.223:5180/library/redis:5.0.10
相关推荐
chen_note2 小时前
Kubernetes1.23版本搭建(三台机器)
运维·容器·kubernetes·云计算·kubepi
花落已飘2 小时前
openEuler WSL2容器化开发实战:Docker Desktop集成与应用部署
运维·docker·容器
高旭博7 小时前
7. kubernetes资源——service服务
云原生·容器·kubernetes
斯普信专业组7 小时前
Docker 常用命令与时区配置指南
docker·容器·eureka
天一生水water19 小时前
ubuntu使用毫秒镜像方式安装docker mysql
ubuntu·阿里云·docker
Qayrup21 小时前
docker 搭建私有仓库,推送并拉取
运维·docker·容器
郭庆汝1 天前
docker拉取英伟达官方cuda11.8镜像
docker·cuda11.8
天下不喵1 天前
Ubuntu24.04安装Docker过程记录
docker
黑黍1 天前
如何在k8s中配置并使用nvidia显卡
云原生·容器·kubernetes