docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Docker磁盘空间不足导致MySQL启动失败

解决Docker磁盘空间不足导致MySQL启动失败问题

作者:bug攻城狮

这篇文章主要介绍了解决Docker磁盘空间不足导致MySQL启动失败问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

这个错误表明 Docker 容器的磁盘空间已满,具体是 MySQL 的临时表空间文件(ibtmp1)无法继续增长。

以下是解决方案:

立即解决方案

1. 清理 Docker 磁盘空间

# 查看 Docker 磁盘使用情况
docker system df

# 清理所有未使用的资源(容器、镜像、网络、构建缓存)
docker system prune -a

# 如果有卷的话,也可以清理未使用的卷
docker volume prune

2. 删除特定的容器和关联资源

# 停止并删除 MySQL 容器
docker stop mysql
docker rm mysql

# 删除可能过大的卷(谨慎操作,确保不要删除重要数据)
docker volume ls
docker volume rm [volume_name]

3. 调整 Docker 的存储位置或限制

# 查看 Docker 根目录大小
du -sh /var/lib/docker/

# 如果有大文件,可以手动清理一些日志文件
# 通常在 /var/lib/docker/containers/[container_id]/

长期解决方案

1. 启动 MySQL 时限制临时表大小

docker run --name mysql -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_INNODB_TEMP_DATA_FILE_PATH=ibtmp1:128M:autoextend:max:1G \
-d mysql:5.7 \
--innodb_temp_data_file_path=ibtmp1:128M:autoextend:max:1G

2. 使用数据卷持久化存储

# 创建专门的数据卷
docker volume create mysql_data

docker run --name mysql -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-v mysql_data:/var/lib/mysql \
-d mysql:5.7

3. 监控磁盘空间

# 查看系统磁盘空间
df -h

# 查看 Docker 容器磁盘使用
docker ps -s

紧急恢复步骤

首先清理 Docker 空间

docker system prune -a
docker volume prune

重新启动 MySQL 容器

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

如果问题依旧,检查宿主机磁盘空间

df -h
# 如果宿主机磁盘满,需要清理系统文件

这个错误通常是由于 Docker 的存储驱动积累了太多数据导致的,定期执行 docker system prune 可以预防此类问题。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文