如何在 Ubuntu 22.04 上安装 Harbor Docker 镜像注册表
Harbor 是一个适用于云原生环境的开源 Docker 镜像注册表。 Harbor作为镜像注册中心,用于存储和分发容器镜像。为了保护工件,harbor 通过策略、基于用户角色的访问控制、图像安全扫描器(以确保图像没有漏洞)以及图像签名(确保用户从受信任的注册表中提取图像)提供安全保护。
Harbor 是 CNCF 研究生项目和企业级图像注册中心。提供合规性和高性能,帮助您跨云原生环境(例如 Kubernetes 和 Docker)一致、安全地管理工件。
在本指南中,我将向您展示如何在 Ubuntu 22.04 服务器上使用 Docker 安装 Harbor Image Registry。本指南包括 Docker CE 安装、启用 SSL 的基本 Harbor 安装,以及 Harbor 作为镜像注册表的基本使用和管理。
先决条件
要阅读本指南,您需要满足以下要求:
- Ubuntu 22.04 服务器 - 此示例使用主机名为“harbor-server”的通用且全新的 Ubuntu 服务器。
- 具有 root/管理员权限的非 root 用户。
- 港口将使用的域名或本地域。
安装Docker CE(社区版)
Harbor镜像仓库提供了多个版本,可以安装在不同类型的环境中。您可以通过Helm图表将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。现在,您将把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 地址并生成了用于保护港口安全的 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.hwdomain.io
....
# 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.hwdomain.io/fullchain.pem
private_key: /etc/letsencrypt/live/registry.hwdomain.io/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
完成后保存文件并退出编辑器。
下面是配置的详细部分:
- 主机名 - 将用于运行harbor镜像注册表的域名。在此示例中,harbor 将安装在“registry.hwdomain.io”上。
- https - 取消注释此选项将启用并保护您的 Harbor 安装。但您还需要确保已为您的域生成 SSL 证书,并输入证书公钥和私钥的完整路径。
- harbor_admin_password - 将在harbor安装期间使用的初始密码。
- 数据库 - 港口的数据库配置。因此,请务必使用新的强密码来更改密码。
通过安装程序脚本和 Docker Compose 安装 Harbor
现在已经下载了harbor离线安装程序并配置了“harbor.yml”的基本配置文件,您现在可以通过harbor安装目录中可用的安装程序脚本“install.sh”启动harbor安装'/opt/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
在下面的输出中 - 港口集装箱服务正在运行且健康。
接下来,打开 Web 浏览器并访问 Harbor 安装的域名(即:https://registry.hwdomain.io/)。现在您应该会看到港口镜像注册表的登录页面。
使用默认用户 admin 和您通过配置文件“harbor.yml”配置的密码登录。
当您拥有正确的密码时,您现在应该可以看到港口仪表板。此外,您还可以在屏幕上看到港口中名为“library”的默认项目。
至此,您已经完成了baro部署,并通过容器编排Docker引擎和Docker Compose验证了harbor正在运行。
在下一步中,您将学习 Harbor 映像注册表的基本管理。您将学习如何添加用户、设置项目、通过 docker CLI 登录,最后将图像上传到港口。
创建Harbor用户
Harbor 镜像注册表运行后,您现在应该了解如何通过 Harbor 管理仪表板设置和创建新用户。
在“管理”部分中,单击菜单“用户”,然后单击“新用户”按钮。
输入有关新用户的详细信息,然后按“确定”按钮进行确认。在此示例中,您将创建一个新的 Harbor 用户“alice”,该用户将用于通过 docker cli 登录到 Harbor。
创建用户后,您应该在“用户菜单列表”中看到您的用户。
将用户添加到 Harbor 项目
在 Harbor 中,用户将要处理的用户空间就是项目。在默认安装中,harbor 提供默认项目名称“library”。
在此步骤中,您将学习如何将新用户“alice”添加到默认项目“库”,以便新用户能够管理“<图书馆项目。此外,您还需要在目标项目上为新用户分配角色。
单击“项目”;菜单,您应该会看到港口上可用的默认项目“库”。
单击项目“库”以获取该项目的详细设置。
单击菜单“成员”,您应该看到该项目只有一名成员管理员。单击“USER”按钮将harbor用户添加到项目“库”中。
输入要添加到项目的用户并将角色分配给该用户。此示例将使用角色“项目管理员”将用户“alice”添加到项目“库”中。
单击“确定”进行确认。
您现在应该看到用户“alice”在“library”项目的成员列表中可用。
通过Docker Client登录Harbor
在此步骤中,您将学习如何使用 Docker CLI 设置 Harbor 映像注册表。您将使用您创建的用户通过 Docker CLI 登录到 Harbor 映像注册表 - 本示例使用用户“alice”。
返回终端服务器并运行以下 docker 命令来登录 Harbor 镜像注册表。
docker login https://registry.hwdomain.io/
出现提示时,输入您的用户的用户名和密码。此示例将使用用户“alice”。
登录成功后,您应该会看到一条消息,例如“登录成功”。
通过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.hwdomain.io/library/nginx:alpine”。
docker tag nginx:alpine registry.hwdomain.io/library/nginx:alpine
之后,使用以下命令将图像上传并推送到harbor图像注册表。此命令会将映像上传到映像注册表“registry.hwdomain.io”,项目名称为“library”。
docker push registry.hwdomain.io/library/nginx:alpine
下面是将镜像推送到harbor镜像仓库过程中的输出。
将图像上传到港口后,返回港口管理仪表板并单击“项目”菜单,然后单击“存储库”。您应该看到新映像已通过 docker 命令行上传到 Harbor 映像注册表。
结论
您已通过 Docker 在 Ubuntu 22.04 服务器上安装了 Harbor 镜像注册表。您还使用 SSL 证书保护harbor部署,因此您现在可以通过HTTPS安全连接访问harbor。
对于harbor的基本管理,您已经学习了如何在harbor中设置用户和分配角色。您还学习了管理港口项目的基本管理知识。最后,您已成功将harbor添加到Docker作为镜像注册表,并将镜像上传到harbor。
从这里,您可以开始添加新用户并设置将用于您的开发团队的新项目。