确认 Harbor 数据实际存储位置
Harbor 的数据通常存储在安装目录下,可以尝试以下方法确认实际存储路径。
检查 Harbor 配置文件
在 Harbor 安装目录中查找 harbor.yml
文件(通常在 /root/harbor
或 /opt/harbor
下),查看 data_volume
配置项。
示例:
grep "data_volume" /path/to/harbor.yml
输出示例:
data_volume: /var/lib/harbor
这表示 Harbor 的数据存储在 /var/lib/harbor
。
解决办法
1. 清理无用的 Docker 数据
清理未使用的镜像、容器和卷
运行以下命令,清理未使用的 Docker 资源:
# 删除未被使用的镜像、容器、网络和卷
docker system prune -a --volumes
-a
:删除所有未被容器使用的镜像。--volumes
:同时清理未使用的卷。
检查和清理特定无用资源
如果你不想完全删除未使用的资源,可以分别清理:
# 列出所有未被使用的镜像
docker images -f "dangling=true"
# 删除未被使用的镜像
docker rmi $(docker images -f "dangling=true" -q)
# 删除已停止的容器
docker rm $(docker ps -a -q)
# 删除未使用的卷
docker volume prune
2. 检查 Harbor 数据目录
Harbor 的数据默认存储在 /data
目录中,也可以从harbor.yml
配置文件查看。如果你的 Harbor 数据占用较大,可以执行以下检查:
确认 Harbor 数据占用
du -sh /data
清理 Harbor 数据
- 登录到 Harbor Web 界面,清理无用镜像(删除未被标记的镜像)。
- 或者使用 Harbor 提供的清理工具:
# 停止 Harbor 服务
docker-compose down
# 执行 Harbor 数据清理
docker run -it --rm -v /data:/data goharbor/harbor-db:v2.8.0 ./harbor-db-cleaner
3. 将 Docker 数据目录迁移到更大的磁盘
如果清理无效或无法满足需求,可以将 /var/lib/docker
数据迁移到磁盘空间更大的地方(如 /home
)。
步骤 1:停止 Docker 服务
systemctl stop docker
步骤 2:复制 /var/lib/docker
到新的目录
将 Docker 数据目录复制到 /home/docker
(磁盘空间更大的地方):
cp -a /var/lib/docker /home/docker
步骤 3:修改 Docker 配置
编辑 Docker 配置文件 /etc/docker/daemon.json
,指定新的数据根目录:
{
"data-root": "/home/docker"
}
如果文件不存在,则需要创建。
步骤 4:重启 Docker 服务
systemctl start docker
步骤 5:验证迁移是否成功
docker info | grep "Docker Root Dir"
输出应显示新的 Docker 数据目录 /home/docker
。
4. 使用软链接切换 Docker 数据目录
如果你不想修改 Docker 配置文件,也可以通过创建软链接的方式将 /var/lib/docker
指向新的路径。
步骤 1:停止 Docker 服务
systemctl stop docker
步骤 2:移动 Docker 数据目录
mv /var/lib/docker /home/docker
步骤 3:创建软链接
ln -s /home/docker /var/lib/docker
步骤 4:启动 Docker 服务
systemctl start docker
步骤 5:验证
确保 Docker 服务正常运行,并检查新路径是否生效。
5. 检查其他占用磁盘的服务或日志
除了 Docker 数据外,还可以检查其他可能占用磁盘空间的服务或日志文件:
检查日志文件
du -sh /var/log/*
删除过大的日志文件(如 journal
或特定服务日志):
journalctl --vacuum-size=1G
rm -rf /var/log/<specific-log-file>
6.将 Harbor 数据迁移到更大的磁盘
如果确认了 Harbor 数据路径,可以将数据迁移到磁盘空间较大的目录(如 /home
)。
迁移步骤
停止 Harbor 服务:
docker-compose down
复制数据到新的目录:
cp -a /var/lib/harbor /home/harbor-data
修改 Harbor 配置文件(如
harbor.yml
):data_volume: /home/harbor-data
执行 install.sh 脚本
运行以下命令重新生成docker-compose.yml
:
./install.sh --with-notary --with-trivy --with-chartmuseum
--with-notary:启用 Notary 服务(可选)。
--with-trivy:启用 Trivy 扫描工具(可选)。
--with-chartmuseum:启用 Helm Chart 仓库服务(可选)。
如果你不需要这些组件,可以直接运行:
./install.sh
该脚本会根据 harbor.yml
的配置生成新的 docker-compose.yml
。
运行完成之后会自动启动Harbor
手动启动命令
docker-compose up -d