Harbor 2.3.3 彻底卸载与洁净重装全流程指南
当你面对一个反复报错的Harbor环境,或是准备升级到新版本时,"直接删除文件"可能是最诱人却也最危险的选择。我曾亲眼见过一位同事执行rm -rf命令后,不仅Harbor无法重装,连带Docker服务也陷入瘫痪——这正是典型的不彻底卸载引发的连锁反应。本文将带你用系统化的方式,从零开始构建一套安全的Harbor卸载重装流程。
1. 为什么常规删除会留下隐患
Harbor作为企业级镜像仓库,其组件间存在复杂的依赖关系。简单删除安装目录仅移除了表面文件,而以下隐藏问题往往被忽略:
- 残留的Docker资源:Harbor核心服务(Core、Portal、Jobservice等)都以容器形式运行,直接删除安装目录会导致这些容器变成"孤儿进程"
- 数据库持久化数据:PostgreSQL或Redis中的数据文件默认存储在
/data目录,这些正是重装后配置冲突的主要来源 - 证书与密钥遗留:TLS证书、私钥等敏感文件若未清理,新安装时可能因权限问题导致服务启动失败
提示:执行任何删除操作前,建议先用
docker ps -a | grep harbor查看运行中的容器状态
2. 卸载前的准备工作
2.1 环境状态检查
首先通过以下命令确认当前Harbor的运行状态:
# 检查Harbor相关容器 docker-compose -f /path/to/harbor/docker-compose.yml ps # 查看挂载卷信息 docker volume ls | grep harbor记录输出中显示的STATUS和VOLUME NAME,这将决定后续清理策略。
2.2 关键数据备份
即使要卸载,这些数据也建议保留:
- 配置文件:
harbor.yml中的自定义参数(特别是external_database配置) - 镜像存储:
/data/registry目录下的所有镜像层文件 - 扫描报告:
/data/trivy-adapter中的安全扫描结果
使用以下命令打包关键数据:
tar -czvf harbor_backup_$(date +%Y%m%d).tar.gz \ /path/to/harbor/harbor.yml \ /data/registry \ /data/trivy-adapter3. 分步骤彻底卸载Harbor
3.1 停止并移除容器服务
进入Harbor安装目录执行标准停止命令:
cd /path/to/harbor docker-compose down -v这里的-v参数会同时删除docker-compose中定义的匿名卷,但不会删除命名卷。
3.2 清理Docker残留资源
手动清理可能遗漏的资源:
# 删除所有Harbor相关容器 docker ps -aq --filter "name=harbor" | xargs docker rm -f # 删除所有Harbor相关镜像 docker images -aq --filter "reference=*harbor*" | xargs docker rmi -f # 清理网络 docker network ls -q --filter "name=harbor" | xargs docker network rm3.3 删除持久化数据
根据安装时的配置,需要清理以下目录:
| 目录路径 | 内容类型 | 是否必须删除 |
|---|---|---|
| /data | 数据库、Redis、镜像存储 | 重装必删 |
| /var/log/harbor | 日志文件 | 可选 |
| /etc/harbor | 配置文件 | 建议删除 |
使用find命令定位所有相关文件:
sudo find / -name "*harbor*" -exec ls -ld {} \;确认无误后执行删除:
sudo rm -rf /data /etc/harbor /var/log/harbor4. Docker系统级清理(可选)
当需要完全重置Docker环境时,可执行以下深度清理:
# 停止所有容器 docker stop $(docker ps -aq) # 删除所有容器、镜像、卷 docker system prune -a --volumes # 清理残留iptables规则 sudo iptables -F sudo iptables -t nat -F警告:此操作会清除Docker中所有非运行中的资源,请确保已备份必要数据
5. 洁净重装最佳实践
5.1 新版Harbor安装准备
下载离线安装包并校验完整性:
wget https://github.com/goharbor/harbor/releases/download/v2.3.3/harbor-offline-installer-v2.3.3.tgz sha256sum harbor-offline-installer-v2.3.3.tgz解压后修改配置文件关键参数:
# harbor.yml 示例片段 hostname: registry.yourdomain.com data_volume: /new/data/path # 避免使用旧路径 database: password: new_strong_password # 必须修改默认密码5.2 安装后健康检查
完成./install.sh后,验证服务状态:
# 检查容器状态 docker-compose ps # 测试API响应 curl -k https://localhost/api/v2.0/health常见问题处理:
- 端口冲突:检查
netstat -tulnp | grep 80确认无其他服务占用 - 证书错误:确保证书路径权限为
chmod 600 /etc/harbor/ssl/* - 数据库连接失败:检查PostgreSQL日志
docker logs harbor-db
6. 高级维护技巧
6.1 使用外部数据库
在harbor.yml中配置外部PostgreSQL可避免数据丢失:
external_database: harbor: host: postgresql-server port: 5432 db_name: harbor username: harbor password: yourpassword6.2 自动化清理策略
在/etc/cron.daily/创建定时任务脚本:
#!/bin/bash # 清理30天前的镜像标签 docker exec -it harbor-registry registry garbage-collect \ /etc/registry/config.yml --delete-untagged=true6.3 性能调优参数
对于大型仓库,调整harbor.yml中的这些参数:
# 工作线程数配置 core: workers: 8 jobservice: max_job_workers: 10记得在重装后立即修改默认admin密码,这是最常被忽视的安全隐患。