搭建Harbor镜像仓库

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 搭建Harbor镜像仓库

简介

Harbor 是一个开源的企业级容器镜像仓库,它提供了一个安全可靠的方式来存储和分发 Docker 镜像。Harbor 由 VMware 公司发起,旨在满足企业级容器镜像管理的需求,并支持 Docker 镜像以及 Helm Chart 的存储和分发。

以下是 Harbor 镜像仓库的一些主要特性和功能:

  1. 安全性: Harbor 提供了强大的安全性功能,包括用户身份验证、访问控制和审计。它支持 LDAP、AD 等身份验证机制,使管理员能够更好地控制用户和团队的访问权限。
  2. 复制和同步: Harbor 支持镜像仓库之间的复制和同步,这使得在多个地理位置部署 Harbor 实例变得更加容易。这对于分布式团队或跨多个数据中心的部署非常有用。
  3. 图形用户界面(GUI): Harbor 提供了直观的用户界面,方便用户浏览和管理存储在仓库中的镜像和 Helm Chart。通过图形界面,用户可以更容易地执行操作,而无需使用命令行。
  4. 自动化构建: Harbor 可以与 CI/CD 工具集成,支持自动构建和推送镜像。这有助于将构建过程与镜像仓库集成,使整个持续集成和持续交付(CI/CD)流水线更加顺畅。
  5. 漏洞扫描: Harbor 集成了漏洞扫描工具,可以帮助用户发现和解决存储在仓库中的镜像中可能存在的漏洞。这有助于提高容器镜像的安全性。
  6. 多租户支持: Harbor 支持多租户架构,允许不同的团队或项目在同一个 Harbor 实例上创建和管理他们自己的私有镜像仓库。

总的来说,Harbor 提供了一个强大而灵活的解决方案,帮助企业更好地管理和安全地分发容器镜像。这对于采用容器化技术的组织来说是一个有价值的工具,尤其是在大规模部署和跨多个团队协作的环境中。

本文选择的最新版v2.9.0进行部署,以下是Harbor包含的组件:

组件

功能

nginx

Nginx 是一个高性能的Web服务器和反向代理服务器,用于处理 Harbor 的 HTTP 请求,提供负载均衡和安全性。

harbor-jobservice

harbor-jobservice是 Harbor 的作业服务组件,负责处理一些异步任务,例如复制和同步镜像仓库、删除镜像等。

harbor-core

harbor-core 是 Harbor 的核心组件,负责存储和管理 Docker 镜像,提供仓库的核心功能。

harbor-portal

harbor-portal 提供 Harbor 的用户界面,通过 Web 界面允许用户与 Harbor 交互,浏览、搜索和管理镜像以及执行其他操作。

harbor-db

harbor-db 是 Harbor 的数据库容器,负责存储和管理 Harbor 仓库的元数据、配置信息以及用户认证等数据。

redis

Redis 是一个内存数据库,用作缓存系统,提高 Harbor 的性能和响应速度。

registry

registry 是一个 Docker 镜像仓库,负责存储和管理 Docker 镜像。

registryctl

registryctl 是 Harbor 的 Registry 控制器,用于执行与 Docker 镜像仓库相关的管理任务。

harbor-log

harbor-log 容器负责存储 Harbor 的日志信息,记录各种活动和事件,以便后续的审计和故障排除。

Harbor安装先决条件

硬件

下表列出了部署 Harbor 的最低和推荐硬件配置。

资源

最低限度

推荐

中央处理器

2个CPU

4个CPU

内存

4GB

8GB

磁盘

40GB

160GB

软件

下表列出了目标主机上必须安装的软件版本。

软件

版本

Docker引擎

版本 17.06.0-ce+ 或更高版本

Docker 组合

docker-compose (v1.18.0+) 或 docker compose v2 (docker-compose-plugin)

开放式SSL

最新的优先

网络端口

Harbor 要求目标主机上打开以下端口。

端口

协议

描述

443

HTTPS

Harbor 门户和核心 API 接受此端口上的 HTTPS 请求。您可以在配置文件中更改此端口。

4443

HTTPS

连接到 Harbor 的 Docker Content Trust 服务。您可以在配置文件中更改此端口。

80

HTTP协议

Harbor 门户和核心 API 接受此端口上的 HTTP 请求。您可以在配置文件中更改此端口。

部署方式

  • 在线部署程序:在线部署程序从 Docker hub 下载 Harbor 镜像。因此,安装程序的尺寸非常小。
  • 离线部署程序:如果部署 Harbor 的主机没有连接到 Internet,请使用离线部署程序。离线部署程序包含预构建的映像,因此它比在线安装程序大。

在线和离线安装程序的安装过程几乎相同,由于服务器不能上网,这里是离线部署的操作。

开始部署

1.首先安装Docker和Docker Compose:

# 安装docker
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce -y
systemctl start docker
systemctl enable docker
# 安装docker-compose
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version

2.下载Harbor

选择的最新版v2.9.0进行部署

# 创建一个目录用于存储Harbor的配置文件和数据
sudo mkdir -p /data/harbor


# 下载并解压Harbor的安装包
curl -L https://github.com/goharbor/harbor/releases/download/v2.9.0/harbor-online-installer-v2.9.0.tgz -o harbor.tgz
tar xvf harbor.tgz -C /data/harbor


# 进入Harbor安装目录
cd /data/harbor/harbor


# 复制模板配置文件
cp harbor.yml.tmpl harbor.yml

3.配置Harbor

# 编辑harbor.yml文件,设置Harbor的主机名、管理员密码、证书等信息。
# 修改以下配置项


#域名
hostname: your-harbor-domain


#管理员密码
harbor_admin_password: your-password


#证书,如果有证书就配置,没有先禁用
certificate: /data/harbor/ssl/root.crt
private_key: /data/harbor/ssl/private_key.pem
external_url: https://your-harbor-domain:8433


#数据存储路径
data_volume: /data/harbor/data



#完整配置
egrep -v "^$|#" harbor.yml
hostname: your-harbor-domain
http:
port: 80
harbor_admin_password: Harbor12345
database:
password: root123
max_idle_conns: 100
max_open_conns: 900
conn_max_lifetime: 5m
conn_max_idle_time: 0
data_volume: /data/harbor/data
trivy:
ignore_unfixed: false
skip_update: false
offline_scan: false
security_check: vuln
insecure: false
jobservice:
max_job_workers: 10
job_loggers:
- STD_OUTPUT
- FILE
notification:
webhook_job_max_retry: 3
log:
level: info
local:
rotate_count: 50
rotate_size: 200M
location: /var/log/harbor
_version: 2.9.0
proxy:
http_proxy:
https_proxy:
no_proxy:
components:
- core
- jobservice
- trivy
upload_purging:
enabled: true
age: 168h
interval: 24h
dryrun: false
cache:
enabled: false
  expire_hours: 24

4.安装Harbor:

# 执行安装脚本
./install.sh

这将根据harbor.yml配置文件中的设置安装并配置Harbor。

5.访问Harbor Web界面

安装完成后,你可以通过浏览器访问Harbor的Web界面。默认的地址是http://your-harbor-domain。使用刚才配置的管理员账户和密码登录。默认账号密码是admin  Harbor12345

上传下载Harbor镜像

1.配置http镜像仓库可信任
如果不添加此配置,login时会报Error response from daemon: Get https://192.168.1.101/v2/: dial tcp 192.168.1.1:443: connect: connection refused


/etc/docker/daemon.json 
{
"insecure-registries": ["192.168.1.101"]
}
systemctl restart docker


2.打标签
docker tag nginx 192.168.1.101/dev/nginx


3.登录
docker login 192.168.1.101


4.上传
docker push 192.168.1.101/dev/nginx


5.下载 
docker pull 192.168.1.101/dev/nginx

Harbor常用操作

1.启停命令

# 停止Harbor
docker-compose stop
# 启动Harbor
docker-compose start
# 重启Harbor
docker-compose restart

2.重新配置Harbor命令

要重新配置 Harbor,请执行以下步骤。

1.停止Harbor
docker-compose down -v
2.更新harbor.yaml
vim harbor.yml
3.运行prepare脚本以填充配置
./prepare
要重新配置 Harbor 以安装 Trivy,请在命令中包含该组件prepare
./prepare --with-trivy
4.重新创建并启动Harbor实例
docker-compose up -d

3.其他命令

删除Harbor的容器,但保留文件系统中的所有图像数据和Harbor的数据库文件:

docker-compose down -v

在执行干净的重新安装之前删除 Harbor 数据库和图像数据:

rm -r /data/harbor/data/database
rm -r /data/harbor/data/registry
rm -r /data/harbor/data/redis

https://goharbor.io/docs/2.9.0/

官方文档

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。   相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
6月前
|
Kubernetes Cloud Native 应用服务中间件
云原生|kubernetes|kubernetes集群使用私有镜像仓库拉取镜像(harbor或者官方的registry私有镜像仓库)
云原生|kubernetes|kubernetes集群使用私有镜像仓库拉取镜像(harbor或者官方的registry私有镜像仓库)
1053 0
|
5天前
|
运维 Linux Docker
安装Harbor镜像仓库
本文介绍了如何在Linux系统上安装和配置Harbor镜像仓库。首先通过阿里云镜像源安装Docker,然后下载并解压Harbor离线安装包。配置Harbor服务的相关参数。最后,通过运行安装脚本完成Harbor的安装,并进行基本的测试,包括登录、构建和推送Docker镜像。文章还提供了相关资源链接,方便读者进一步了解和学习。
19 2
|
1月前
|
Kubernetes Ubuntu NoSQL
harbor镜像仓库自建
harbor镜像仓库自建
|
4月前
|
数据可视化 Linux 数据安全/隐私保护
Harbor私有镜像仓库搭建
Harbor私有镜像仓库搭建
68 3
|
3月前
|
Docker 容器
docker: 搭建 harbor 镜像仓库
docker: 搭建 harbor 镜像仓库
|
6月前
|
存储 API 数据安全/隐私保护
企业级Docker镜像仓库Harbor部署与使用
企业级Docker镜像仓库Harbor部署与使用
|
6月前
|
JavaScript Devops Java
DevOps搭建(一)-安装Harbor镜像仓库详细步骤
DevOps搭建(一)-安装Harbor镜像仓库详细步骤
104 0
|
6月前
|
Shell Linux 开发工具
搭建自己的Docker Harbor镜像仓库(2)-- 使用篇
搭建自己的Docker Harbor镜像仓库(2)-- 使用篇
183 1
|
6月前
|
Docker 容器
搭建自己的Docker Harbor镜像仓库(1)--- 安装篇
搭建自己的Docker Harbor镜像仓库(1)--- 安装篇
183 1
|
1月前
|
Linux 应用服务中间件 Shell
docker学习--docker容器镜像常用命令大全(简)
本文档详细介绍了Docker中的镜像命令与容器管理命令。镜像命令部分涵盖了镜像搜索、下载、上传等操作;容器管理命令则包括了容器的创建、启动、停止、删除及日志查看等功能。通过具体示例,帮助用户更好地理解和使用Docker相关命令。
153 0