
线上服务和redis均采用docker部署,突然出现服务无法链接redis的问题,登录服务器排查发现redis的docker容器报错如下
2026-04-10 20:25:30.644 WARN 1 --- [ XNIO-1 task-1] o.s.s.o.provider.endpoint.TokenEndpoint : Handling error: RedisPipelineException, Pipeline contained one or more invalid commands; nested exception is io.lettuce.core.RedisCommandExecutionException: MISCONF Errors writing to the AOF file: No space left on device
注意最后有一个no space left on device,AOF文件写入失败,磁盘空间不足
先进入redis容器,察看容器内的文件大小
docker exec -it redis bash
du -sh /data/* 2>/dev/null | sort -rh | head -10
发现输出如下,文件很小,所以不是redis容器的问题

现在回到宿主机,查看宿主机的磁盘空间
df -h
输出结果如下

从结果中分析/dev/vda7 磁盘满了
先清理一下docker无用的容器、镜像等内容
docker system prune -a volumes -f
执行玩在执行df -h 发现还是没有变化,那我们就去看看到底是docker的那些文件占了这么大内存
# 进入data目录
cd /data
# 查看大小超过100M的文件
find . -type f -size +100M -exec ls -lh {} \; 2>/dev/null
输出内容如下
root@xdny03-PC:/data# find . -type f -size +100M -exec ls -lh {} \; 2>/dev/null
-rw-r--r-- 1 root root 120M 2月 11 2025 ./var/lib/docker/overlay2/c5712c32b935b778722da153d9be4585188de59808604120f9ac9f2e13955d40/merged/app.jar
-rw-r--r-- 1 root root 107M 2月 11 2025 ./var/lib/docker/overlay2/db52b5916d49f127f1f58d9d54b1df81b0c1a480a1689229031f2dba2f9c0492/diff/app.jar
-rw-r--r-- 1 root root 127M 2月 11 2025 ./var/lib/docker/overlay2/3381e73bac6adc5e08b98a990c1af5e56c9b13b2bd09ff918216db2efb0a7ee8/merged/app.jar
-rw-r--r-- 1 root root 1.3G 4月 10 21:52 ./var/lib/docker/overlay2/0388598f1a2331754cc2a20c6582cbe5bda68d670b5c47863732e2f0d79546c3/merged/home/nacos/data/protocol/raft/naming_service_metadata/log/LOG
-rw-r--r-- 1 root root 1.3G 4月 10 21:52 ./var/lib/docker/overlay2/0388598f1a2331754cc2a20c6582cbe5bda68d670b5c47863732e2f0d79546c3/merged/home/nacos/data/protocol/raft/naming_instance_metadata/log/LOG
-rw-r--r-- 1 root root 1.3G 4月 10 21:52 ./var/lib/docker/overlay2/0388598f1a2331754cc2a20c6582cbe5bda68d670b5c47863732e2f0d79546c3/merged/home/nacos/data/protocol/raft/naming_persistent_service_v2/log/LOG
-rw-r--r-- 1 502 dialout 115M 8月 8 2022 ./var/lib/docker/overlay2/0388598f1a2331754cc2a20c6582cbe5bda68d670b5c47863732e2f0d79546c3/merged/home/nacos/target/nacos-server.jar
-rw-r--r-- 1 root root 1.3G 4月 10 21:52 ./var/lib/docker/overlay2/0388598f1a2331754cc2a20c6582cbe5bda68d670b5c47863732e2f0d79546c3/diff/home/nacos/data/protocol/raft/naming_service_metadata/log/LOG
-rw-r--r-- 1 root root 1.3G 4月 10 21:52 ./var/lib/docker/overlay2/0388598f1a2331754cc2a20c6582cbe5bda68d670b5c47863732e2f0d79546c3/diff/home/nacos/data/protocol/raft/naming_instance_metadata/log/LOG
-rw-r--r-- 1 root root 1.3G 4月 10 21:52 ./var/lib/docker/overlay2/0388598f1a2331754cc2a20c6582cbe5bda68d670b5c47863732e2f0d79546c3/diff/home/nacos/data/protocol/raft/naming_persistent_service_v2/log/LOG
-rw-r--r-- 1 root root 110M 2月 11 2025 ./var/lib/docker/overlay2/4b6501941b561ba1eac0a68f3eea3ce11e37a31858ed35574659aef217004717/merged/app.jar
-rw-r--r-- 1 root root 125M 2月 11 2025 ./var/lib/docker/overlay2/52b527223ee2403d92d25be40af96f1254d38b504eccd2d10c6c938292a162a2/diff/app.jar
-rw-r--r-- 1 root root 114M 2月 11 2025 ./var/lib/docker/overlay2/3272ae9fc1c1536be27b50a70b47f5597a18853ced99dc9fbe4a7018434bfe17/merged/app.jar
-rw-r--r-- 1 root root 107M 2月 11 2025 ./var/lib/docker/overlay2/965ed7b36a57d72a2fcc55899c92c5cdfcb6445c3170c1b07ce1687df92b74a3/merged/app.jar
-rw-r--r-- 1 root root 106M 2月 11 2025 ./var/lib/docker/overlay2/418bdde585744ff76a2b5d62ef24efa172106580c5136e3df7b00e94487d065b/merged/app.jar
-rw-r--r-- 1 root root 106M 2月 11 2025 ./var/lib/docker/overlay2/faea0ace41fc0487fd8931a4651d387314737b951022e92393ef5209b0fdd2bb/diff/app.jar
-rw-r--r-- 1 root root 133M 2月 11 2025 ./var/lib/docker/overlay2/b73ec37bc602a3bedbd832ecc4094dc9dc20bed74020c3c8b6776ff547dfe062/diff/app.jar
-rw-r--r-- 1 root root 127M 2月 11 2025 ./var/lib/docker/overlay2/9f60e333ca3bd6e1ae0bc580371bfac69ee0a060b8c1bdc5207a4b0c280e109b/diff/app.jar
-rw-r--r-- 1 root root 106M 8月 8 2022 ./var/lib/docker/overlay2/b62b28c8111ba03c705a68455ff9c2636e1f87eec43e80edeb16e4725bb2759f/diff/home/nacos-server-2.1.1.tar.gz
-rw-r--r-- 1 root root 120M 2月 11 2025 ./var/lib/docker/overlay2/3267003417a267ac956c5e551ad212f43ea60f1d874f15c84569e2e136bdf520/diff/app.jar
-rw-r--r-- 1 root root 106M 2月 11 2025 ./var/lib/docker/overlay2/b53ae29249f80b9c0164ac0cfc7ae0459cd5150147e265fe7ec864db75f4757b/merged/app.jar
-rw-r--r-- 1 root root 106M 2月 11 2025 ./var/lib/docker/overlay2/ae55614e86784867d3cf699e4675a248c21536afbf1d6db53621713573f31219/diff/app.jar
-rw-r--r-- 1 root root 110M 2月 11 2025 ./var/lib/docker/overlay2/c6e438f119e96fbe5a6ea5be897edb064c9c1fbd49b82440191388d1e0622375/diff/app.jar
-rw-r--r-- 1 root root 112M 8月 23 2025 ./var/lib/docker/overlay2/7c5187b82d7b4be3ade22fa4a9a4481d59f4bdd9a3331e2f2832ba877a384b81/merged/app.jar
-rw-r--r-- 1 root root 133M 2月 11 2025 ./var/lib/docker/overlay2/55a46e1eb6533e2c22f63d86a17c0281e670d9dcab6fa77501c99c3f6a0cb720/merged/app.jar
-rw-r--r-- 1 root root 125M 2月 11 2025 ./var/lib/docker/overlay2/7c8f9fb2dd8ba3c4b977acea266b589e8720218571f3b8431243219e8fa3f079/merged/app.jar
-rw-r--r-- 1 root root 112M 8月 23 2025 ./var/lib/docker/overlay2/49661662a4b7cfface6ec652b4d1035c982c6a2b3aa461bbed5f9b4681618d18/diff/app.jar
-rw-r--r-- 1 502 dialout 115M 8月 8 2022 ./var/lib/docker/overlay2/b32049ba40a4b37acfbba43554510fe3b6b1c55f6ba7e94607301cff5842fbdc/diff/home/nacos/target/nacos-server.jar
-rw-r--r-- 1 root root 114M 2月 11 2025 ./var/lib/docker/overlay2/c003734ea83010c26796e165090a089f0032419b3eccc8324e4bc54467f33967/diff/app.jar
-rw-r----- 1 root root 481M 4月 10 20:25 ./var/lib/docker/containers/fb1d2a4c17e3927eba49b51b8019895709ab49f7710d53527d9f21ed84d6bc18/fb1d2a4c17e3927eba49b51b8019895709ab49f7710d53527d9f21ed84d6bc18-json.log
-rw-r----- 1 root root 123M 4月 10 20:25 ./var/lib/docker/containers/3d06335a37a332c7ac703cbed2b0d5cb9515d00d8b7965ac2317ac5881d8368b/3d06335a37a332c7ac703cbed2b0d5cb9515d00d8b7965ac2317ac5881d8368b-json.log
-rw-r----- 1 root root 743M 4月 10 21:53 ./var/lib/docker/containers/9f2720e2a24fa2dde194f67fa725e86bb3c2fec69f28c2a85c2934ec153f22e7/9f2720e2a24fa2dde194f67fa725e86bb3c2fec69f28c2a85c2934ec153f22e7-json.log
-rw-r----- 1 root root 5.1G 4月 10 10:05 ./var/lib/docker/containers/bb5fd6e7af03a67042b6fd1025ceaf4e8b30a6e263139b08ef0b472e4368cbae/bb5fd6e7af03a67042b6fd1025ceaf4e8b30a6e263139b08ef0b472e4368cbae-json.log
-rw-r----- 1 root root 3.0G 4月 10 21:53 ./var/lib/docker/containers/f01ef869383cc8c065a4a9c7bed5393c41a5628feda57e8b55aefa08025806e4/f01ef869383cc8c065a4a9c7bed5393c41a5628feda57e8b55aefa08025806e4-json.log
发现最后的那几个日志文件占了很大的内存,这里有两种执行思路,根据实际情况选择
如果需要保留docker日志,则先停止所有容器和docker,然后将docker的文件移动到空间充裕的磁盘,然后修改docker的配置文件在重启docker后重启服务
# 创建配置文件
cat > /etc/docker/daemon.json <<EOF
{
"data-root": "存放docker数据的目录",
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
EOF
# 迁移数据
systemctl stop docker
mv /var/lib/docker 存放docker数据的目录
systemctl start docker
这里需要注意重启后那几个文件是不会消失的,但是以后新产生的日志文件不会超过10M,最大文件数量是3个
操作完成后,需要重启容器
那几个日志文件其实是不影响docker容器的运行的,我们可以直接删除那几个日志文件,但是随着时间积累那几个日志文件会被重新创建,然后越来越大,这里我采用的这个方式,应为这个只需要定时清理一下日志文件,不用停机,而且我的数据量可以半年清理一次,就懒得修改配置了重启服务了
cd /data
find /var/lib/docker/containers/ -name "*.log" -exec truncate -s 0 {} \;
执行到这里在执行df -h就会发现服务正常了