博主头像

人間になりたい!!!!!


皖ICP备2025096275号

K3s 专题向研究 ep2: 私有 Docker 仓库 (Harbor) 的安装与配置

前言

在上一篇文章搭建完 K3s Master 和 Worker 节点之后, 我们就需要将我们的程序推送到 K3s 内部, 来实现集群化的部署. 在开发环境, 我们可以直接将打包好的 Docker 镜像推送到 K3s 内部. 但在实际生产环境, 更推荐搭建本地 Docker 私有仓库. 这样不仅方便我们管理 Docker 镜像, 同时也可以更快捷的将程序集群化部署.

由于博主刚开始研究 K3s, 故本文可能会出现的问题包括但不限于各种低级错误, 十分不严谨的专业用语, 还请各路大佬轻喷

搭建需求

  • 任意 Linux 发行版
  • 已安装 Docker && Docker-compose

注意

安装 Harbor 会创建很多 Docker 容器, 请确保这些容器和您现有业务不产生冲突. 如果产生冲突, 建议在一个单独的虚拟机中安装

Harbor Containers
Harbor Containers


开整

1. 安装 Harbor

1.1 下载安装程序

wget https://github.com/goharbor/harbor/releases/download/v2.15.0/harbor-offline-installer-v2.15.0.tgz
  • 解压压缩包
tar -xzvf harbor-offline-installer-v2.15.0.tgz

1.2 修改配置文件

  • 进入解压后的目录, 可以看到目录中存在 harbor.yml.tmpl. 我们需要使用该模板创建配置文件
cp harbor.yml.tmpl harbor.yml
  • 按照个人需求对该文件进行编辑, 这里对几个必要的键做了批注
KeyDescriptionRecommendation
hostname本机 hostname, 这里不能设置为 localhost127.0.0.1, 否则外部设备无法连接至该仓库-
http-> portHTTP 服务器端口, 根据自己需求设置即可80
https -> portHTTPS 服务器端口, 根据需求配置. 如果启用了 HTTPS, 将无法使用 HTTP 端口连接/登录后台. 这里推荐使用 Openresty 等反向代理工具来启用 TLS 加密, 而不是在这里启用443
https -> certificateHTTPS 服务器证书路径, 建议设置为绝对路径-
https -> private_keyHTTPS 服务器私钥, 建议设置为绝对路径-
external_url如果该仓库对公网公开, 那么这里填写该仓库对应的公网地址 (注意: 如果需要使用 HTTP 登录后台, 请不要在此处使用 HTTPS)-
harbor_admin_password默认后台登录密码, 这里可以根据自己需求修改-
databaseHarbor DB 的数据库相关配置, 除去 password 以外均不建议修改-
data_volume所有 Harbor 数据的存储目录, 设置为绝对路径-
log -> locationHarbor 产生的日志存储目录, 设置为绝对路径-
proxyHarbor 代理相关设置. 如果您处于中国大陆地区, 建议配置代理服务器-
  • 配置修改完成后保存退出, 运行 ./install.sh
  • 如果脚本运行无报错, 则安装成功

1.3 测试

  • 浏览器进入 http(s)://<IPAddr>:<Port>, 使用默认用户名 admin 登录后台. 如果您看到如下页面, 则安装成功

Harbor
Harbor

如果您先前未修改默认用户密码, 则建议您立即修改

至此, Harbor 的安装就完成了

2. 上传 Docker 镜像

2.1 新建项目

  • 登录 Harbor, 进入管理面板
  • 点击 + New Project, 添加新项目. 在弹出的对话框内填入项目名称, 是否公开, 项目配额限制以及镜像代理
注: 这里的 "项目" 并非指代单个程序的项目名称, 而是整个仓库分支的名称. 例如, 你可以将其设置为 dev, publicrelease

2.2 创建 Docker 推送用户

  • 进入管理面板的 Administration (管理) --> Users (用户) 页面, 单击 + NEW USER, 并填写新用户相关信息

Create new user
Create new user

2.3 上传 Docker 镜像

  • 在您的开发机上启动 Docker, 并 cd 进程序代码根目录
请确保您的程序拥有完整有效的 Dockerfile
  • 运行以下指令编译当前项目
docker build -t <ProjectName>:v<Version> .
  • ProjectName 项目名称
  • Version 版本标签

示例: docker build -t myapp:v1.0.0 .

  • 将当前镜像打上仓库 Tag
docker tag <ProjectName>:<Version> <DockerhubURL>/<HarborProjectName>/<ProjectName>:<Version>
  • HarborProjectName 在 Harbor WebUI 内创建的项目名
  • DockerhubURL 您的私有镜像仓库 URL

示例: docker tag myapp:v1.0.0 myregistry.com/dev/myapp:v1.0.0

  • 登录仓库并推送
docker login <DockerhubURL>
docker push <DockerhubURL>/<HarborProjectName>/<ProjectName>:v<Version>

示例

docker login myregistry.com
docker push myregistry.com/dev/myapp:v1.0.0
注意: 如果您配置了反向代理和 TLS 加密, 并在 docker login 过程中遇到了 404 报错, 请将 harbor.ymlexternal_url 的协议改为 https, 然后再次执行 install.sh 脚本. 您不会丢失任何数据
  • 当上传完成后, 您应当可以在管理面板中看到您上传的镜像

Projects
Projects

至此, Docker 镜像的上传也完成了


后记

本人非专业相关从业人员, 如有错误或疏漏请指出! 如果觉得有用请分享给需要的人, 感谢阅读

K3s 专题向研究 ep2: 私有 Docker 仓库 (Harbor) 的安装与配置
https://blog.nanami.tech/archives/276/
本文作者 Madobi Nanami
发布时间 2026-04-09
许可协议 CC BY-NC-SA 4.0
发表新评论