ubuntu /var/lib/docker存储太大,迁移。

/var/lib/docker存储太大,导致根分区空间不够,

$ sudo du -sh /var/lib/docker

161G /var/lib/docker

迁移思路:先移动数据,再建立软连接。

1.停止docker服务

$sudo systemctl stop docker

2.建立新的docker存储目录

$sudo mkdir -p /data/lib/docker

3.使用rsync同步docker目录,最好不用mv,先备份再删除妥当些.

sudo rsync -avz /var/lib/docker /data/lib/

4.更改/var/lib/目录下的docker目录名称,相当于备份(任何改动,先备份,养成好习惯)

$sudo mv /var/lib/docker    /var/lib/docker-old

5.建立软链接

$sudo ln -s /data/lib/docker /var/lib/docker

6.查看软连接是否建立成功

$ ls -la /var/lib

lrwxrwxrwx  1 root     root    22 23:52 docker -> /data/lib/docker

7.重启docker

$ sudo systemctl restart docker

8.检测docker执行目录Docker Root Dir是否变更为/data/lib/docker

$ sudo docker info

......

Name: ubuntu

ID: YJGL:GTM4:GKKS:NZRO:N5SQ:7RWK:MQWO:XUSG:JV7U:ATMR:ODJK:CDJ3

Docker Root Dir: /data/lib/docker            #这里已变更

Debug Mode (client): false

Debug Mode (server): false

Registry: https://index.docker.io/v1/

......

9.检测相关容器的启动日志,如无异常,删除/var/lib/docker-old,以释放空间。

$ sudo rm -rf /var/lib/docker-old

本文转载至https://www.cnblogs.com/liusingbon/p/12939447.html

dafei@dftech:~$ # 检查容器是否在运行 docker ps -a --no-trunc | grep 02325261db034187973e206b6b24702ad0bf435840d2e5313267d6a2a27da902 # 获取容器详细信息(名称、镜像、启动参数等) docker inspect 02325261db034187973e206b6b24702ad0bf435840d2e5313267d6a2a27da902 | jq '.[] | {Name: .Name, Image: .Config.Image, Cmd: .Config.Cmd}' 02325261db034187973e206b6b24702ad0bf435840d2e5313267d6a2a27da902 ghcr.io/homarr-labs/homarr:latest "/app/entrypoint.sh sh run.sh" 3 weeks ago Up 20 minutes 0.0.0.0:7575->7575/tcp, :::7575->7575/tcp homarr { "Name": "/homarr", "Image": "ghcr.io/homarr-labs/homarr:latest", "Cmd": [ "sh", "run.sh" ] } dafei@dftech:~$ # 清空日志(不影响正在运行的容器) sudo truncate -s 0 /var/lib/docker/containers/02325261db034187973e206b6b24702ad0bf435840d2e5313267d6a2a27da902/*-json.log # 验证清理结果 ls -lh /var/lib/docker/containers/02325261db034187973e206b6b24702ad0bf435840d2e5313267d6a2a27da902/*-json.log ls: cannot access '/var/lib/docker/containers/02325261db034187973e206b6b24702ad0bf435840d2e5313267d6a2a27da902/*-json.log': Permission denied dafei@dftech:~$ sudo ls -lh /var/lib/docker/containers/02325261db034187973e206b6b24702ad0bf435840d2e5313267d6a2a27da902/*-json.log -rw-r--r-- 1 root root 0 Mar 24 13:02 '/var/lib/docker/containers/02325261db034187973e206b6b24702ad0bf435840d2e5313267d6a2a27da902/*-json.log' dafei@dftech:~$ df -h Filesystem Size Used Avail Use% Mounted on tmpfs 794M 2.2M 792M 1% /run efivarfs 256K 64K 188K 26% /sys/firmware/efi/efivars /dev/mapper/ubuntu--vg-ubuntu--lv 145G 142G 0 100% / tmpfs 3.9G 8.0K 3.9G 1% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sda2 2.0G 187M 1.7G 11% /boot /dev/sda1 1.1G 6.2M 1.1G 1% /boot/efi 192.168.2.12:/volume4/homes/dafei/Photos 13T 1.9T 11T 16% /mnt/DS920/photos 192.168.2.12:/volume4/homes/laoshi/Photos 13T 1.9T 11T 16% /mnt/DS920/photoslaoshi 192.168.2.12:/volume4/share/45105/immich 500G 336G 165G 68% /mnt/DS920/immich 192.168.2.12:/volume2/surveillance 13T 9.6T 2.7T 79% /mnt/DS920/nvr 192.168.2.12:/volume4/share/45105/xiaoya 500G 336G 165G 68% /mnt/DS920/xiaoya tmpfs 794M 16K 794M 1% /run/user/1000
最新发布
03-25
<think>嗯,用户执行了一系列Docker相关的命令,看起来是想检查和清理某个容器的日志文件。首先,我需要理解每个步骤的目的和结果,然后分析可能的问题和解决方案。 用户首先用`docker ps -a --no-trunc`检查容器是否在运行,并通过grep过滤特定的容器ID。这显示容器确实在运行,状态为Up 20分钟,名称是homarr,镜像用的是ghcr.io/homarr-labs/homarr:latest。接下来用`docker inspect`获取详细信息,确认了容器名称、镜像和启动命令,这些都是常规检查步骤,没有问题。 然后用户尝试清空日志文件,使用`sudo truncate -s 0`来清空容器日志。但在验证时,直接执行`ls -lh`遇到了权限问题,提示无法访问。这说明普通用户没有权限访问Docker的容器日志目录,必须用sudo提升权限。用户之后加上sudo再次执行,确认日志文件大小变为0,清理成功。这里需要注意,直接操作容器日志文件可能会影响日志收集,建议使用`docker logs`命令或配置日志驱动来控制日志大小,避免手动清理。 接着用户执行了`df -h`查看磁盘使用情况,发现根分区(/dev/mapper/ubuntu--vg-ubuntu--lv)已使用100%,这可能是导致问题的根本原因。因为磁盘空间满了,Docker可能无法正常写入日志,导致容器运行异常。需要清理磁盘空间,比如删除不必要的文件、调整Docker日志策略或扩展存储容量。 可能用户在处理容器日志时遇到了磁盘空间不足的问题,导致容器运行异常,所以想通过清理日志来释放空间。但发现权限问题后使用sudo解决了,但根目录空间仍然不足。用户可能需要进一步清理其他文件,或者调整Docker存储位置到更大的分区。此外,用户挂载了多个网络存储,但根分区是本地磁盘,可能需要检查哪些本地文件占用了大量空间,比如Docker镜像、临时文件等。 总结问题:用户可能因为根分区空间不足导致容器日志无法写入或其他问题,尝试清理日志但遇到权限问题,之后发现磁盘已满。需要解决磁盘空间问题,并建议优化日志管理策略,避免未来再次发生。</think>以下是对你操作过程的逐步解析及建议: --- ### **一、容器状态检查** 1. 通过`docker ps -a --no-trunc`命令检查容器状态: - 容器ID:`02325261db034187973e206b6b24702ad0bf435840d2e5313267d6a2a27da902` - **运行状态**:`Up 20 minutes`(已运行20分钟) - **镜像信息**:`ghcr.io/homarr-labs/homarr:latest` - **端口映射**:`0.0.0.0:7575->7575/tcp`(通过7575端口可访问服务) - **名称**:`homarr` 2. 通过`docker inspect`获取容器详细信息: ```json { "Name": "/homarr", "Image": "ghcr.io/homarr-labs/homarr:latest", "Cmd": ["sh", "run.sh"] } ``` - **启动命令**:`sh run.sh`,符合镜像默认配置。 --- ### **二、容器日志清理操作** 1. **清空日志文件**: ```bash sudo truncate -s 0 /var/lib/docker/containers/02325261db034187973e206b6b24702ad0bf435840d2e5313267d6a2a27da902/*-json.log ``` - 通过`truncate -s 0`将日志文件大小重置为0,**不影响正在运行的容器**。 2. **验证清理结果**: - **首次验证失败**:`ls -lh`未加`sudo`导致权限不足(`Permission denied`)。 - **使用`sudo`后验证成功**:日志文件大小已清空为0(`Size 0`)。 --- ### **三、关键问题分析** 1. **磁盘空间不足**: - 通过`df -h`发现根分区使用率已达100%: ``` /dev/mapper/ubuntu--vg-ubuntu--lv 145G 142G 0 100% / ``` - **风险**:可能导致容器崩溃、日志无法写入、系统运行异常。 2. **解决方案**: - **清理磁盘空间**: - 删除无用镜像:`docker system prune -a` - 清理临时文件:`sudo apt-get clean` - 检查大文件:`sudo du -sh /* | sort -h` - **扩展存储**:扩容`/dev/mapper/ubuntu--vg-ubuntu--lv`逻辑卷。 - **迁移Docker数据目录**(推荐): ```bash sudo systemctl stop docker sudo rsync -a /var/lib/docker /新路径/ sudo mv /var/lib/docker /var/lib/docker.bak sudo ln -s /新路径/docker /var/lib/docker sudo systemctl start docker ``` --- ### **四、操作建议** 1. **日志管理优化**: - 限制单个日志文件大小(在`/etc/docker/daemon.json`中配置): ```json { "log-driver": "json-file", "log-opts": {"max-size": "10m", "max-file": "3"} } ``` - 重启Docker服务:`sudo systemctl restart docker` 2. **监控磁盘空间**: - 定期运行`df -h`和`docker system df`(查看Docker磁盘使用)。 --- ### **总结** 当前首要任务是**释放根分区空间**,避免系统崩溃。建议优先清理无用Docker资源(镜像、容器、卷),并长期优化日志管理和存储配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值