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

发布于:2024-12-19 ⋅ 阅读:(14) ⋅ 点赞:(0)

确认 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 数据
  1. 登录到 Harbor Web 界面,清理无用镜像(删除未被标记的镜像)。
  2. 或者使用 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)。

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

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

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

    data_volume: /home/harbor-data
    
  4. 执行 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