搭建Docker Harbor仓库

news/2025/2/25 4:07:00

搭建 Docker Harbor 仓库是一个常见的需求,Harbor 是一个企业级的 Docker 镜像仓库,提供了镜像管理、用户权限控制、漏洞扫描等功能。以下是详细的搭建步骤:


1. 环境准备

  • 操作系统:Ubuntu 20.04 或更高版本(或其他 Linux 发行版)。
  • Docker:确保已安装 Docker 和 Docker Compose。
  • 硬件要求
    • 至少 2 CPU 核心。
    • 至少 4 GB 内存。
    • 至少 40 GB 磁盘空间。

2. 安装 Docker 和 Docker Compose

如果尚未安装 Docker 和 Docker Compose,可以按照以下步骤安装:

安装 Docker
# 更新软件包索引
sudo apt update

# 安装依赖包
sudo apt install apt-transport-https ca-certificates curl software-properties-common

# 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 添加 Docker 软件源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装 Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

# 启动并启用 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker

# 验证 Docker 是否安装成功
docker --version
安装 Docker Compose
# 下载 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 验证 Docker Compose 是否安装成功
docker-compose --version

3. 下载 Harbor 安装包

访问 Harbor GitHub 发布页面,下载最新版本的离线安装包(harbor-offline-installer-<version>.tgz)。

# 下载 Harbor
wget https://github.com/goharbor/harbor/releases/download/v2.8.0/harbor-offline-installer-v2.8.0.tgz

# 解压安装包
tar -xzvf harbor-offline-installer-v2.8.0.tgz

# 进入解压后的目录
cd harbor

4. 配置 Harbor

编辑 harbor.yml 文件,配置 Harbor 的基本信息。

# 复制示例配置文件
cp harbor.yml.tmpl harbor.yml

# 编辑配置文件
nano harbor.yml

主要配置项:

  • hostname:Harbor 的访问地址(例如 harbor.example.com 或 IP 地址)。
  • httphttps:选择 HTTP 或 HTTPS 协议(建议使用 HTTPS)。
  • harbor_admin_password:管理员账户的默认密码。
  • data_volume:Harbor 数据存储路径(默认 /data)。

示例配置:

hostname: harbor.example.com
http:
  port: 80
https:
  port: 443
  certificate: /path/to/certificate.crt
  private_key: /path/to/private.key
harbor_admin_password: Harbor12345
data_volume: /data

5. 安装 Harbor

运行安装脚本,启动 Harbor。

sudo ./install.sh

安装完成后,Harbor 会自动启动,并监听配置文件中指定的端口。


6. 访问 Harbor

在浏览器中访问 Harbor 的地址(例如 http://harbor.example.comhttps://harbor.example.com),使用以下默认凭据登录:

  • 用户名admin
  • 密码Harbor12345(或配置文件中指定的密码)

7. 配置 Docker 客户端

为了让 Docker 客户端能够推送和拉取镜像,需要配置 Docker 信任 Harbor 的证书(如果使用 HTTPS)。

如果使用自签名证书
  1. 将 Harbor 的证书复制到 Docker 客户端:

    sudo mkdir -p /etc/docker/certs.d/harbor.example.com
    sudo cp /path/to/certificate.crt /etc/docker/certs.d/harbor.example.com/ca.crt
    
  2. 重启 Docker 服务:

    sudo systemctl restart docker
    
  3. 登录到 Harbor:

    docker login harbor.example.com
    

8. 使用 Harbor

  • 推送镜像

    docker tag my-image:latest harbor.example.com/my-project/my-image:latest
    docker push harbor.example.com/my-project/my-image:latest
    
  • 拉取镜像

    docker pull harbor.example.com/my-project/my-image:latest
    

9. 管理 Harbor

  • 停止 Harbor

    sudo docker-compose down
    
  • 启动 Harbor

    sudo docker-compose up -d
    
  • 升级 Harbor

    1. 下载新版本的 Harbor 安装包。
    2. 备份数据和配置文件。
    3. 运行升级脚本:
      sudo ./prepare
      sudo docker-compose up -d
      

10. 常见问题

  • 端口冲突:确保 Harbor 使用的端口(如 80、443)未被其他服务占用。
  • 证书问题:如果使用 HTTPS,确保证书配置正确。
  • 存储空间不足:定期清理不需要的镜像,或扩展存储空间。

通过以上步骤,你可以成功搭建并配置 Docker Harbor 仓库。如果有更多问题,欢迎随时提问!


http://www.niftyadmin.cn/n/5864967.html

相关文章

AxiosError: Network Error

不知怎么的&#xff0c;项目还在开发阶段&#xff0c;之前还好好的&#xff0c;玩儿了两天再一打开发现页面无法显示数据了&#xff0c;报错如下&#xff1a; 我以为是后端出问题了&#xff0c;但是后端控制台无报错&#xff0c;又用postman测试了一下&#xff0c;可以获取到数…

npm使用了代理,但是代理软件已经关闭导致创建失败

如果在关闭前打开了vscode&#xff0c;此时vscode中的终端没有刷新&#xff0c;就会出现这个问题&#xff0c;最开始会一直转圈圈&#xff0c;直到超时&#xff0c;然后出现该报错 ❯ npm create vuelatest npm error code ECONNREFUSED npm error syscall connect npm error …

Qt QTreeWidget 总结

Qt QTreeWidget 总结 1. 概述 QTreeWidget 是 Qt 中用于显示树形结构的控件&#xff0c;继承自 QTreeView&#xff0c;但提供了更简单的接口。适合展示层级数据&#xff08;如文件目录、组织结构&#xff09;。每个节点是 QTreeWidgetItem 对象&#xff0c;支持文本、图标、复…

《鸿蒙开发-答案之书》获取视频第一帧和视频时间

《鸿蒙开发-答案之书》获取视频第一帧和视频时间 /*** 获取视频信息**let result await MySightUtil.getSightInfo(this.sightUri);*let base64 : string result[0];*let duration : number result[1]** param uri 视频地址* returns 第一个数据是缩略图 base64 字符串&…

通过AI辅助生成PPT (by quqi99)

作者&#xff1a;张华 发表于&#xff1a;2025-02-23 版权声明&#xff1a;可以任意转载&#xff0c;转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明(http://blog.csdn.net/quqi99) 问题 媳妇需要将一个pdf文件中的某些部分做成PPT课件&#xff0c;我在想是…

【Windows系统node_modules删除失败(EPERM)问题解析与应对方案】

Windows系统node_modules删除失败(EPERM)问题解析与应对方案 问题现象 当开发者尝试删除Node.js项目的node_modules目录时&#xff0c;常会遇到如下错误提示&#xff1a; [Error: EPERM: operation not permitted, unlink D:\project\...\esbuild.exe] {errno: -4048,code: …

电商运营中私域流量的转化与变现:以开源AI智能名片2+1链动模式S2B2C商城小程序为例

摘要 电商运营的核心目标在于高效地将产品推向市场&#xff0c;实现私域流量的转化和变现。本文以“罗辑思维”的电商实践为背景&#xff0c;探讨了私域流量变现的重要性&#xff0c;并深入分析了开源AI智能名片21链动模式S2B2C商城小程序在电商运营中的应用与价值。通过该模式…

【SpringMVC】概述 SSM:Spring + SpringMVC + Mybats

目录标题 0、SSM (Spring SpringMVC MyBatis)1、回顾MVC1.1、什么是MVC1.2、Model1时代1.3、Model2时代1.4、回顾Servlet 2、什么是SpringMVC2.1、概述2.2、中心控制器2.3、SpringMVC执行原理 0、SSM (Spring SpringMVC MyBatis) SSM (Spring SpringMVC MyBatis) 是一个很…