解决/var/lib/docker(默认的 Docker 数据目录)占用较大,并且所在磁盘空间不足

确认 Harbor 数据实际存储位置

Harbor 的数据通常存储在安装目录下,可以尝试以下方法确认实际存储路径。

检查 Harbor 配置文件

在 Harbor 安装目录中查找 harbor.yml 文件(通常在 /root/harbor/opt/harbor 下),查看 data_volume 配置项。

示例:

bash 复制代码
grep "data_volume" /path/to/harbor.yml

输出示例:

yaml 复制代码
data_volume: /var/lib/harbor

这表示 Harbor 的数据存储在 /var/lib/harbor


解决办法

1. 清理无用的 Docker 数据

清理未使用的镜像、容器和卷

运行以下命令,清理未使用的 Docker 资源:

bash 复制代码
# 删除未被使用的镜像、容器、网络和卷
docker system prune -a --volumes
  • -a:删除所有未被容器使用的镜像。
  • --volumes:同时清理未使用的卷。
检查和清理特定无用资源

如果你不想完全删除未使用的资源,可以分别清理:

bash 复制代码
# 列出所有未被使用的镜像
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 数据占用
bash 复制代码
du -sh /data
清理 Harbor 数据
  1. 登录到 Harbor Web 界面,清理无用镜像(删除未被标记的镜像)。
  2. 或者使用 Harbor 提供的清理工具:
bash 复制代码
# 停止 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 服务
bash 复制代码
systemctl stop docker
步骤 2:复制 /var/lib/docker 到新的目录

将 Docker 数据目录复制到 /home/docker(磁盘空间更大的地方):

bash 复制代码
cp -a /var/lib/docker /home/docker
步骤 3:修改 Docker 配置

编辑 Docker 配置文件 /etc/docker/daemon.json,指定新的数据根目录:

json 复制代码
{
  "data-root": "/home/docker"
}

如果文件不存在,则需要创建。

步骤 4:重启 Docker 服务
bash 复制代码
systemctl start docker
步骤 5:验证迁移是否成功
bash 复制代码
docker info | grep "Docker Root Dir"

输出应显示新的 Docker 数据目录 /home/docker


4. 使用软链接切换 Docker 数据目录

如果你不想修改 Docker 配置文件,也可以通过创建软链接的方式将 /var/lib/docker 指向新的路径。

步骤 1:停止 Docker 服务
bash 复制代码
systemctl stop docker
步骤 2:移动 Docker 数据目录
bash 复制代码
mv /var/lib/docker /home/docker
步骤 3:创建软链接
bash 复制代码
ln -s /home/docker /var/lib/docker
步骤 4:启动 Docker 服务
bash 复制代码
systemctl start docker
步骤 5:验证

确保 Docker 服务正常运行,并检查新路径是否生效。


5. 检查其他占用磁盘的服务或日志

除了 Docker 数据外,还可以检查其他可能占用磁盘空间的服务或日志文件:

检查日志文件
bash 复制代码
du -sh /var/log/*

删除过大的日志文件(如 journal 或特定服务日志):

bash 复制代码
journalctl --vacuum-size=1G
rm -rf /var/log/<specific-log-file>

6.将 Harbor 数据迁移到更大的磁盘

如果确认了 Harbor 数据路径,可以将数据迁移到磁盘空间较大的目录(如 /home)。

迁移步骤
  1. 停止 Harbor 服务:

    bash 复制代码
    docker-compose down
  2. 复制数据到新的目录:

    bash 复制代码
    cp -a /var/lib/harbor /home/harbor-data
  3. 修改 Harbor 配置文件(如 harbor.yml):

    yaml 复制代码
    data_volume: /home/harbor-data
  4. 执行 install.sh 脚本

    运行以下命令重新生成 docker-compose.yml

bash 复制代码
./install.sh --with-notary --with-trivy --with-chartmuseum
--with-notary:启用 Notary 服务(可选)。
--with-trivy:启用 Trivy 扫描工具(可选)。
--with-chartmuseum:启用 Helm Chart 仓库服务(可选)。

如果你不需要这些组件,可以直接运行:

bash 复制代码
./install.sh

该脚本会根据 harbor.yml 的配置生成新的 docker-compose.yml

运行完成之后会自动启动Harbor

手动启动命令

bash 复制代码
 docker-compose up -d

相关推荐
金刚猿11 小时前
01_虚拟机中间件部署_root 用户安装 docker 容器,配置非root用户权限
docker·中间件·容器
JH_Kong12 小时前
解决 WSL 中 Docker 权限问题:从踩坑到完整修复
docker·容器
忆~遂愿12 小时前
GE 引擎与算子版本控制:确保前向兼容性与图重写策略的稳定性
大数据·开发语言·docker
70asunflower16 小时前
Emulation,Simulation,Virtualization,Imitation 的区别?
linux·docker
春日见17 小时前
车辆动力学:前后轮车轴
java·开发语言·驱动开发·docker·计算机外设
xuhe217 小时前
[全流程详细教程]Docker部署ClawBot, 使用GLM4.7, 接入TG Bot实现私人助理. 解决Docker Openclaw Permission Denied问题
linux·docker·ai·github·tldr
星火s漫天17 小时前
第一篇: 使用Docker部署flask项目(Flask + DB 容器化)
数据库·docker·flask
MonkeyKing_sunyuhua19 小时前
docker compose up -d --build 完全使用新代码打包的方法
docker·容器·eureka
醇氧20 小时前
【docker】mysql 8 的健康检查(Health Check)
mysql·docker·容器
技术路上的探险家20 小时前
Ubuntu下Docker与NVIDIA Container Toolkit完整安装教程(含国内源适配)
linux·ubuntu·docker