Docker(十六):利用Docker摆设Harbor私有镜像堆栈

[复制链接]
发表于 2026-10-6 10:04:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

镜像仓库是容器化交付的地基。公共仓库有速率和合规限制,企业内网里往往需要一处自己能完全掌控的镜像存放地。Harbor 是开源的企业级 Docker Registry,除了基础的镜像存取,还带用户与角色管理、访问控制和操作审计,适合团队内部统一收口。这篇记录用 Docker 方式搭一套 Harbor 私有镜像栈的关键步骤。

先搞清楚 Harbor 解决了什么

直接用 Docker 自带的 registry 也能存镜像,但缺少三样企业最在意的东西:

  • 权限分层。谁能推、谁能拉,按项目分开管,而不是所有人一个密码通吃。
  • 操作留痕。谁在什么时候推了哪个 tag、拉了哪次构建,后面追溯有依据。
  • 复制策略。不同机房、不同集群之间可以按规则同步镜像,不用手工搬运。

所以只要涉及多人协作、多环境发布,基本都会上 Harbor 而不是裸 registry。

环境准备:Docker 与 Docker Compose

搭 Harbor 之前,需要服务器上已经装好 Docker 和 Docker Compose。如果是 CentOS / Rocky / Alma 系,最常见的一行安装方式是走官方仓库:

# 安装 Docker、Docker Compose 相关组件
yum install docker-ce docker-ce-cli containerd.io

装完记得启动并设成开机自启:

sudo systemctl enable docker
sudo systemctl start docker

确认版本能正常输出,再往下走:Docker 建议 17.05 以上,Compose 建议 1.10 以上,太低会让 Harbor 的编排文件跑不起来。

docker -v
docker-compose -v

下载并解压 Harbor 安装包

Harbor 官方会同时提供在线版和离线版安装包。内网机器一般选离线版(harbor-offline-installer),因为它把 Harbor 自身依赖的镜像也打进包里了,装的时候不会临时去公网拉。

wget 安装包地址 -O harbor-offline-installer.tgz
tar -zxvf harbor-offline-installer.tgz
cd harbor

如果服务器直连公网不畅,可以先把包下载到能上网的机器再传过去,走 scp 或者内网文件服务都行。

修改 harbor.yml 核心配置

解压后目录下有个 harbor.yml(老版本叫 harbor.cfg),至少要动这几项:

配置项说明常见填法
hostname访问地址,填 IP 或域名harbor.example.internal
http.port / https.port监听端口80 或 443,用域名就配 https
admin_password初始管理员密码装完立刻改掉
data_volume镜像和数据落盘位置放到空间充足的分区
database.password内置数据库密码自动生成的先留着

注意 hostname 这一项决定了后续客户端怎么解析,写 IP 就只能用 IP 登录,写域名就得让 DNS 或 /etc/hosts 能解析到这台机器。别装完了才发现访问方式对不上。

执行安装脚本

配置改完,跑安装脚本,Harbor 会通过 Compose 把一系列组件拉起来:

./install.sh

这个过程会依次构建并启动:反向代理(nginx)、核心服务(core)、数据库、Job 服务、Registry、日志日志收集等。看到最后输出 ----Harbor has been installed and started successfully----,说明栈起来了。如果中途报错,先看 docker ps 里哪个容器没起来,日志日志用:

docker-compose logs -f core

登录与基本使用

浏览器打开 hostname 配置的地址,用初始管理员账号(默认 admin)加上面填的密码登录。进去第一件事是改密码,然后建项目:

  • 新建项目时建议勾上访问级别为私有,避免镜像被 unintended 的同事拉取;
  • 项目里可以再加成员,按开发、测试、运维分工给不同权限;
  • 配置好机器人账号(robot account)后,CI 流水线就能用短时令牌推拉镜像,比共用管理员密码安全。

本地推镜像前,需要先让 Docker 信任这个非 https 地址,否则会报证书错误:

sudo mkdir -p /etc/docker/certs.d/harbor.example.internal
# 或者干脆配置 insecure-registries 后重启 docker

登录之后就可以按正常流程推拉:

docker login harbor.example.internal
docker tag 本地镜像:标签 harbor.example.internal/项目名/镜像:标签
docker push harbor.example.internal/项目名/镜像:标签

日常运维的几个注意点

  • 磁盘是硬约束。镜像仓库会越存越大,定期清理未被任何项目引用的镜像(uns tagged / dangling),data_volume 所在分区提前留够余量。
  • 备份要连数据目录一起。Harbor 的状态在屋里那个 data 目录里,只备份配置文件恢复不回来。
  • 升级走离线包。新版本下载 offline installer 覆盖升级,升级前先停 Compose 栈并做一次全量备份。
  • 访问控制留痕。开启操作审计后,谁拉了哪个镜像都有记录,出问题能定位到人。
  • 别把 admin 密码写在 CI 里。用robot account 或者配置免密的 pull 证书,密钥可定期轮换。

整体流程可以概括成一句话:装好 Docker → 拉离线包 → 改 harbor.yml → ./install.sh → 登录建项目 → 配 CI 推镜像。跑通一次之后,团队后续发版就有了一个内部可信的镜像中转站。

qidao123.com企服评测-应用市场 编辑提示

本文由齐道123 IT 运维社区整理,记录基于 Docker 部署 Harbor 私有镜像仓库的常规流程。文中命令与配置项仅适用于你自有或已获授权的网络环境,内网域名、证书与安装资源请按实际环境替换,不要直接套用公网地址。Harbor 会保存企业内部镜像资产,部署时请确保 data_volume 所在磁盘有余量并做好定期备份与访问控制。

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表