Harbor 私有镜像仓库部署


前言

在实际工作中,我们一般都是要部署自己的私有仓库的平台,如 Gitlab、Maven、Harbor等。今主要介绍的是 Harbor 私有镜像仓库的部署过程,首先介绍一下什么是 Harbor:Harbor is an open source registry that secures artifacts with policies and role-based access control, ensures images are scanned and free from vulnerabilities, and signs images as trusted. 简单的理解就是,Harbor 是基于镜像复制策略和角色访问控制的开源注册表。

一、规划

1.1 服务规划

OSserverversion备注
CentOS7.8(162.14.76.192)-4C/8G/50Gdocker18.06.3私有镜像仓库
docker-compose2.1.1
Harbor2.3.4
CentOS7.8(162.16.234.128)-1C/2G/50Gdocker18.06.3验证私有镜像仓库可用性

1.2 资源下载

二、部署

2.1 Docker 部署

可参照阿里来部署,大家可以去看看,这里就不在演示。

Docker 部署文档

2.2 Docker-Compose 部署

1、资源下载

去 GitHub 下载资源,不过下载非常慢(国外),建议通过迅雷下载,还是比较快的,资源下载地址请看 1.2 小节

在这里插入图片描述

2、将下载资源上传至服务器并做软连接

ln -s /opt/docker-compose-linux-x86_64 /usr/local/bin/docker-compose

3、赋予 x 权限

chmod +x /opt/docker-compose-linux-x86_64

4、查看版本

docker-compose -v
Docker Compose version v2.1.1

2.3 Harbor 部署

1、资源下载

在这里插入图片描述

2、将下载资源上传至服务器并解压

tar xzf harbor-offline-installer-v2.3.4.tgz

# 查看一下解压内容
cd harbor && ll
total 596288
-rw-r--r-- 1 root root      3361 Nov  9 19:01 common.sh
-rw-r--r-- 1 root root 610560420 Nov  9 19:01 harbor.v2.3.4.tar.gz
-rw-r--r-- 1 root root      7840 Nov  9 19:01 harbor.yml.tmpl
-rwxr-xr-x 1 root root      2500 Nov  9 19:01 install.sh
-rw-r--r-- 1 root root     11347 Nov  9 19:01 LICENSE
-rwxr-xr-x 1 root root      1881 Nov  9 19:01 prepare

3、修改配置文件

cp harbor.yml.tmpl harbor.yml
vim harbor.yml
# 主要修改以下几部分就可以

hostname: 162.14.76.192              # 服务器IP或域名
http:
  port: 80
harbor_admin_password: zhurs@123     # 登录密码
database:
  password: root123                  # 数据存储密码
  max_idle_conns: 100
  max_open_conns: 900
data_volume: /data/harbor/data       # 数据存储路径(无需手动创建)
trivy:
  ignore_unfixed: false
  skip_update: false
  insecure: false
jobservice:
  max_job_workers: 10
notification:
  webhook_job_max_retry: 10
chart:
  absolute_url: disabled
log:
  level: info
  local:
    rotate_count: 50
    rotate_size: 200M
    location: /data/harbor/logs     # 日志路径(需手动创建,否则报错无法找打路径)
_version: 2.3.0
proxy:
  http_proxy:
  https_proxy:
  no_proxy:
  components:
    - core
    - jobservice
    - trivy

4、更新配置文件

./prepare

5、安装

./install.sh

在这里插入图片描述

6、查看一下容器状态

在这里插入图片描述

三、验证

3.1 可用性验证

浏览器输入http://162.14.76.192/

登录用户:admin

登录密码:zhurs@123

在这里插入图片描述

登录成功!!

在这里插入图片描述

3.2 功能性验证

1、Docker 客户端配置 Harbor 私服连接

cat > /etc/docker/daemon.json << EOF
{ "insecure-registries":["162.14.76.192"] }
EOF

2、重启 Docker 客户端

systemctl daemon-reload
systemctl restart docker

3、Docker 客户端登录 Harbor 私服

docker login -u admin -p zhurs@123 162.14.76.192

WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

4、任意 pull 一个测试镜像

docker pull busybox

5、将该镜像打 tag 并 push 到 Harbor 镜像仓库

docker tag busybox:latest 162.14.76.192/library/busybox:v1.0

# 查看本地镜像
docker images
REPOSITORY                      TAG                 IMAGE ID            CREATED             SIZE
162.14.76.192/library/busybox   v1.0                7138284460ff        2 weeks ago         1.24MB
busybox                         latest              7138284460ff        2 weeks ago         1.24MB

# push到Harbor仓库
docker push 162.14.76.192/library/busybox:v1.0
The push refers to repository [162.14.76.192/library/busybox]
d94c78be1352: Pushed 
v1.0: digest: sha256:34efe68cca33507682b1673c851700ec66839ecf94d19b928176e20d20e02413 size: 527

6、在 Harbor web 界面看看 push 的镜像

在这里插入图片描述

7、删除本地镜像,并 pull 远程 Harbor 仓库镜像

# 拉取镜像
docker pull 162.14.76.192/library/busybox:v1.0
v1.0: Pulling from library/busybox
e685c5c858e3: Pull complete 
Digest: sha256:34efe68cca33507682b1673c851700ec66839ecf94d19b928176e20d20e02413
Status: Downloaded newer image for 162.14.76.192/library/busybox:v1.0

# 查看镜像
docker images 
REPOSITORY                      TAG                 IMAGE ID            CREATED             SIZE
162.14.76.192/library/busybox   v1.0                7138284460ff        2 weeks ago         1.24MB

可通过 web 界面看到我们的操作日志

在这里插入图片描述

至此,基本的搭建已经完成!!且测试了 Harbor 私服的可用性。

四、FAQ

4.1 路径问题

1、数据路径

在配置文件中定义,定义后无需手动创建(当然也可手动创建),在执行./install.sh后会自动创建。

2、日志路径

指定路径后需要手动创建,否则报错(找不到日志路径),我测试的时候是这样的,不知道各位小伙伴是什么测试结果。

3、配置文件路径

需进入 Harbor 解压目录执行相关操作,包括配置文件,脚本执行等操作,当然你也可以做相关的软连接统一目录结构。

4.2 服务器重启问题

对 Harbor 所在的服务器重启后,可能无法正常访问 Harbor,如下图所示,这是重启后一些服务的状态,明显看到有好几个服务已经宕掉了。

在这里插入图片描述

解决的方法就是:进入 Harbor 的解压目录并执行./install.sh,直到显示如下图后,就可正常访问了。

在这里插入图片描述

4.3 配置文件修改

当我想修改 Harbor web 端口为 82 时,只需修改 harbor.yml 文件的 port,修改完成后直接执行 ./install.sh 即可生效,如下图是修改后的登录结果,如果是云服务,注意安全组开放访问端口。

在这里插入图片描述

总结

以上就是 Harbor 私服的部署过程,其实部署很简单,没有什么技术可言,只是简单的记录一下,部署过程也基本上是一键部署。更多的还是需要我们了解 Docker 的工作原理、底层技术,以及部署 Harbor 的目的和意义。

<点击跳转至开头>

03-15
### Harbor 容器镜像仓库简介 Harbor 是一个开源的企业级 Docker 镜像仓库,由 VMware 提供支持。它为 Docker 镜像提供了一个集中化的存储和管理平台,使开发人员和运维人员能够更方便地共享、存储和部署 Docker 镜像[^3]。 #### 主要功能特性 - **安全性**: Harbor 提供了基于角色的访问控制 (RBAC),图像签名和验证以及安全扫描等功能,确保镜像仓库的安全性。 - **可扩展性**: 支持大规模的镜像管理和高并发操作,适合于大型企业和云环境。 - **易用性**: 提供用户友好的 Web 界面,简化了 Docker 镜像的管理和访问过程。 - **集成能力**: 能够与 CI/CD 工具、监控系统和其他基础设施无缝集成,从而实现自动化的构建、测试和部署流程。 - **多租户支持**: 可以为不同项目或团队提供独立的镜像仓库空间。 - **中文支持**: 提供中文界面和文档,极大地方便了中国用户的使用和部署。 --- ### Harbor部署步骤 以下是 Harbor 的典型部署流程: #### 1. 准备工作 - 获取 `docker-compose` 二进制文件并确认其版本兼容性[^4]。 - 下载 Harbor 的安装包(通常是一个 `.tgz` 文件),可以通过官方 GitHub 或其他可信源获取。 - 如果需要 HTTPS 功能,则需准备 TLS 证书及相关密钥文件。 #### 2. 创建配置文件 进入解压后的 Harbor 目录后,复制模板配置文件到实际使用的配置文件名下: ```bash cd /usr/local/harbor cp harbor.yml.tmpl harbor.yml ``` 编辑 `harbor.yml` 文件以适配具体的网络设置、域名解析以及其他必要的参数调整[^1]。 #### 3. 运行预备脚本 执行以下命令来完成数据库初始化及其他前置准备工作: ```bash ./prepare ``` #### 4. 启动 Harbor 服务 利用预设的启动脚本来激活整个 Harbor 平台的服务组件: ```bash ./install.sh ``` #### 5. 验证运行状态 检查各容器实例是否成功启动,并通过浏览器或者 CLI 测试连接至目标 URL 地址,例如默认情况下可通过 `http://<your-host>:8080` 来访问图形化界面。 如果遇到因服务器重启而导致部分服务不可达的情况,应重新评估这些依赖项之间的健康状况并采取相应措施恢复它们的工作秩序[^2]。 --- ### 示例代码片段 下面展示如何标记本地镜像以便推送到远程 Harbor 实例中去的过程: 假设当前有一个名为 `myapp:v1` 的镜像存在, 推送前先打标签: ```bash docker tag myapp:v1 your-harbor-domain/library/myapp:v1 ``` 接着推送该新命名的空间下的镜像副本上去: ```bash docker push your-harbor-domain/library/myapp:v1 ``` 最后拉取刚才上传成功的同一份资源回来做对比检验: ```bash docker pull your-harbor-domain/library/myapp:v1 ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云计算-Security

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值