本页内容
- 先决条件
- 安装 Docker CE(社区版)
- 下载 Harbor 安装程序
- 配置 Harbor 安装
- 通过安装脚本和 Docker Compose 安装 Harbor
- 创建 Harbor 用户
- 将用户添加到 Harbor 项目
- 通过 Docker 客户端登录 Harbor
- 将镜像推送到 Harbor 仓库
- 结论
Harbor 是面向云原生环境的开源 Docker 镜像仓库。作为一个镜像仓库,harbor 用于存储和分发容器镜像。为了保障制品安全,harbor 通过策略、基于用户角色的访问控制、镜像安全扫描器(确保镜像无漏洞)以及镜像签名(确保用户从可信仓库拉取镜像)来提供安全保护。
Harbor 是 CNCF 毕业项目,也是一款企业级镜像仓库。它提供合规性与高性能,帮助你在 Kubernetes 和 Docker 等云原生环境中持续、安全地管理制品。
在本指南中,我将向你展示如何在 Ubuntu 22.04 服务器上使用 Docker 安装 Harbor 镜像仓库。本指南包括 Docker CE 的安装、启用 SSL 的基础 harbor 安装,以及作为镜像仓库的 harbor 的基本使用与管理。
先决条件
阅读本指南,你需要满足以下要求:
- 一台 Ubuntu 22.04 服务器 —— 本示例使用主机名为 'harbor-server' 的通用全新 Ubuntu 服务器。
- 一个具有 root/管理员权限的非 root 用户。
- 一个将由 harbor 使用的域名或本地域名。
安装 Docker CE(社区版)
harbor 镜像仓库提供多个版本,可安装在不同类型的环境中。你可以通过 Helm chart 将 harbor 部署到 Kubernetes,或者使用 Docker 安装 harbor。
在本示例中,你将通过 Docker 引擎安装 harbor。因此,你现在将通过官方 Docker 仓库将 Docker CE(社区版)安装到你的 Ubuntu 服务器。
运行以下 apt 命令以安装一些基础依赖。
sudo apt install \
ca-certificates \
curl \
gnupg \
lsb-release
当提示确认时输入 y,然后按 ENTER 继续。
依赖安装完成后,运行以下命令下载 Docker 仓库的 GPG 密钥,然后将官方 Docker 仓库添加到你的系统。
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
现在通过以下 apt 命令刷新并更新你的软件包索引。
sudo apt update
你将看到 Docker CE 仓库已添加的输出。
接下来,使用以下 apt 命令将 Docker CE 和 Docker Compose 安装到你的系统。
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
输入 y 确认安装,然后按 ENTER 继续。

Docker 安装完成后,运行以下 systemctl 命令以验证 Docker 服务的当前状态。
sudo systemctl is-enabled docker
sudo systemctl status docker
你现在应该会看到类似以下截图的输出 —— Docker 服务正在运行且已启用。Docker 服务将在系统启动时自动运行。

Docker 引擎安装完成后,你接下来将通过下载 harbor 安装包来开始 harbor 的安装。
下载 Harbor 安装程序
你需要下载 harbor 安装包来安装 harbor。harbor 安装程序有两种类型:离线版本和在线版本。
本指南使用 harbor 离线安装程序进行安装。因此,你现在将把 harbor 离线安装程序下载到你的系统。
将工作目录切换到 '/tmp',并通过以下 curl 命令下载 harbor 离线安装程序。
cd /tmp
curl -s https://api.github.com/repos/goharbor/harbor/releases/latest | grep browser_download_url | cut -d '"' -f 4 | grep '\.tgz$' | wget -i -
现在通过以下 tar 命令解压 harbor 离线安装程序。解压完成后,你应该会看到新目录 'harbor'。
tar -xzvf harbor-offline-installer-v2.6.1.tgz
将 'harbor' 目录移动到 '/opt',这意味着你的 harbor 安装目录将是 '/opt/harbor'。
sudo mv harbor /opt/

配置 Harbor 安装
下载完成 harbor 离线安装程序后,你现在将通过 harbor 包中附带的配置文件 'harbor.yml' 来设置 harbor 安装。
通过 'harbor.yml' 文件,你将设置 harbor 安装的域名,在 harbor 上启用安全的 HTTPS,设置管理员密码,最后设置数据库。
在开始之前,请确保你已将域名指向服务器 IP 地址,并生成了用于保护 harbor 的 SSL 证书。
将你的工作目录切换到 harbor 安装目录 '/opt/harbor'。
cd /opt/harbor
将 harbor 配置模板 'harbor.yml.tmpl' 复制为 'harbor.yml'。然后,使用以下 nano 编辑器命令编辑 harbor 配置文件 'harbor.yml'。
cp harbor.yml.tmpl harbor.yml
sudo nano harbor.yml
按如下方式修改详细配置。
# The IP address or hostname to access admin UI and registry service. # DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients. hostname: registry.howtoforge.local .... # https related config https: # https port for harbor, default is 443 port: 443 # The path of cert and key files for nginx certificate: /etc/letsencrypt/live/registry.howtoforge.local/fullchain.pem private_key: /etc/letsencrypt/live/registry.howtoforge.local/privkey.pem .... # The initial password of Harbor admin # It only works in first time to install harbor # Remember Change the admin password from UI after launching Harbor. harbor_admin_password: Harbor_Docker_Ubuntu .... # Harbor DB configuration database: # The password for the root user of Harbor DB. Change this before any production use. password: db_pass_harbor
完成后保存文件并退出编辑器。
以下是配置的详细部分:
- hostname —— 用于运行 harbor 镜像仓库的域名。本示例中,harbor 将安装在 'registry.howtoforge.local' 上。
- https —— 取消注释此选项将启用并保护你的 harbor 安装。但你还需要确保已为你的域名生成了 SSL 证书,并填写证书公钥和私钥的完整路径。
- harbor_admin_password —— harbor 安装期间使用的初始密码。
- database —— harbor 的数据库配置。请确保将密码更改为新的强密码。
通过安装脚本和 Docker Compose 安装 Harbor
现在 harbor 离线安装程序已下载,且 'harbor.yml' 的基础配置文件已配置好,你已准备好通过 harbor 安装目录 '/opt/harbor' 中提供的安装脚本 'install.sh' 开始 harbor 安装。
在开始 harbor 安装之前,请确保你当前的工作目录是 '/opt/harbor'。
现在以 sudo 权限运行 harbor 安装脚本 'install.sh'。
sudo ./install.sh
安装脚本现在将在开始 harbor 安装之前检查系统要求。安装程序将确保 Docker 引擎和 Docker Compose 已安装在系统上。

现在安装程序将解压用于部署 harbor 的镜像。

之后,安装程序将准备 harbor 部署所需的系统环境并生成必要的配置。然后安装将开始。

安装完成后,你应该会看到 harbor 容器服务正在运行的输出。

既然你已经通过安装脚本安装了 harbor,接下来你将通过检查系统上的容器服务并通过 Web 浏览器访问 harbor 镜像仓库来验证 harbor。
运行以下 'docker compose' 命令以验证 harbor 容器服务是否正在运行。
ls
docker compose ps
在下面的输出中 —— harbor 容器服务正在运行且状态正常。

接下来,打开你的 Web 浏览器并访问你的 harbor 安装域名(例如:https://registry.howtoforge.local/)。你现在应该会看到 harbor 镜像仓库的登录页面。
使用默认用户 admin 以及你通过配置文件 'harbor.yml' 设置的密码登录。

输入正确密码后,你现在应该会进入 harbor 仪表盘。同时,你可以在屏幕上看到 harbor 中名为 'library' 的默认项目。

至此,你已完成 harbor 部署,并验证了 harbor 通过容器编排 Docker 引擎和 Docker Compose 正在运行。
在下一步中,你将学习 harbor 镜像仓库的基本管理。你将学习如何添加用户、设置项目、通过 docker CLI 登录,最后将镜像上传到 harbor。
创建 Harbor 用户
harbor 镜像仓库运行后,你现在应该学习如何通过 harbor 管理仪表盘设置和创建新用户。
在 'Administration'(管理)部分,点击 'Users' 菜单,然后点击 'NEW USER'(新建用户)按钮。

输入新用户的详细信息,并按 'OK' 按钮确认。在本示例中,你将创建一个名为 'alice' 的新 harbor 用户,用于通过 docker cli 登录 harbor。

用户创建完成后,你应该在 'Users' 菜单列表中看到你的用户。

将用户添加到 Harbor 项目
在 harbor 中,用户将工作的用户空间是项目。在默认安装中,harbor 提供了默认项目名称 'library'。
在这一步中,你将学习如何将新用户 'alice' 添加到默认项目 'library',以便新用户能够管理 'library' 项目。此外,你还需要为目标项目中的新用户分配角色。
点击 'Project' 菜单,你应该会看到你的 harbor 上可用的默认项目 'library'。
点击项目 'library' 以查看该项目的详细设置。

点击 'Members' 菜单,你应该会看到该项目只有一个成员 admin。点击 'USER' 按钮将 harbor 用户添加到项目 'library'。

输入要添加到项目的用户,并为该用户分配角色。本示例将用户 'alice' 以 'Project Admin'(项目管理员)角色添加到项目 'library'。
点击 'OK' 确认。

你现在应该会看到用户 'alice' 出现在 'library' 项目的成员列表中。

通过 Docker 客户端登录 Harbor
在这一步中,你将学习如何使用 Docker CLI 设置 harbor 镜像仓库。你将通过 Docker CLI 使用你创建的用户登录 harbor 镜像仓库 —— 本示例使用用户 'alice'。
返回到你的终端服务器,运行以下 docker 命令以登录 harbor 镜像仓库。
docker login https://registry.howtoforge.local/
当提示时,输入你的用户的用户名和密码。本示例将使用用户 'alice'。
登录成功后,你应该会看到类似 'Login Succeeded'(登录成功)的消息。

通过 docker cli 登录 harbor 后,你现在可以通过 docker cli 从 harbor 拉取和推送镜像了。
将镜像推送到 Harbor 仓库
完成对 harbor 镜像仓库的身份验证后,你现在将学习如何通过 Docker CLI 将镜像推送/上传到你的 harbor 镜像仓库。
在开始之前,运行以下 docker 命令以下载镜像 'nginx:alpine' 的最新版本。
docker pull nginx:alpine
现在通过以下 docker 命令验证镜像列表。你应该会看到镜像 'nginx:alpine' 已下载。
docker images

要将自定义镜像推送到 harbor 镜像仓库,你可以按照 'harbor-domain.com/project/image:version' 这样的格式修改当前镜像的标签。
因此,运行以下命令将默认标签 'nginx:alpine' 修改为 'registry.howtoforge.local/library/nginx:alpine'。
docker tag nginx:alpine registry.howtoforge.local/library/nginx:alpine
之后,使用以下命令将镜像上传并推送到 harbor 镜像仓库。该命令会将镜像上传到镜像仓库 'registry.howtoforge.local',项目名为 'library'。
docker push registry.howtoforge.local/library/nginx:alpine
以下是将镜像推送到 harbor 镜像仓库过程中的输出。

镜像上传到 harbor 后,返回 harbor 管理仪表盘,点击 'Project' 菜单并点击 'Repositories'(仓库)。你应该会看到通过 docker 命令行上传到 harbor 镜像仓库的新镜像。

结论
你已在 Ubuntu 22.04 服务器上通过 Docker 安装了 harbor 镜像仓库。你还使用 SSL 证书保护了 harbor 部署,因此现在可以通过 HTTPS 安全连接访问 harbor。
关于 harbor 的基本管理,你已经学习了如何在 harbor 中设置用户并分配角色。你还学习了管理 harbor 中项目的基本管理操作。最后,你已成功将 harbor 作为镜像仓库添加到 Docker,并将一个镜像上传到了 harbor。
从这里开始,你可以开始添加新用户,并设置用于你的开发团队的新项目。