执行:docker-compose restart
返回:[3211897] INTERNAL ERROR: cannot create temporary directory!
检查磁盘空间
确保磁盘上有足够的空间。
df -h
显示:
/dev/vda1 197G 197G 0 100%
这会导致无法创建临时目录,从而导致 docker-compose restart 命令失败。
使用 find 命令查找大于 1GB 的文件:
sudo find / -type f -size +1G -exec ls -lh {} \; | awk '{ print $NF ": " $5 }'
以上命令返回
/proc/kcore: 128T
/root/rummy/docker/mysql/data/rummy/pay_orders.ibd: 1.1G
/var/lib/docker/containers/a7948db55353f5487468b6be8ba740d3bcf3c29b8d4026ccbcce324175b05f9e/a7948db55353f5487468b6be8ba740d3bcf3c29b8d4026ccbcce324175b05f9e-json.log: 184G
问题已经找到,docker的日志文件太大,需要清理。
1、可以通过截断日志文件来释放空间:
sudo truncate -s 0 /var/lib/docker/containers/a7948db55353f5487468b6be8ba740d3bcf3c29b8d4026ccbcce324175b05f9e/a7948db55353f5487468b6be8ba740d3bcf3c29b8d4026ccbcce324175b05f9e-json.log
这条命令的含义是将指定的日志文件清空。
具体来说,命令分为以下几个部分:
sudo:以超级用户(root)权限运行命令。因为操作系统中的一些文件可能需要超级用户权限才能修改。
truncate -s 0:truncate 命令用于调整文件大小。-s 0 参数表示将文件的大小设置为 0 字节,即清空文件内容。
/var/lib/docker/containers/a7948db55353f5487468b6be8ba740d3bcf3c29b8d4026ccbcce324175b05f9e/a7948db55353f5487468b6be8ba740d3bcf3c29b8d4026ccbcce324175b05f9e-json.log:这是要被清空的日志文件的路径。在这个例子中,它是 Docker 容器的日志文件。
通过运行这条命令,可以将 Docker 容器的日志文件清空,从而释放出磁盘空间。不过,这只是暂时清空了文件的内容,新的日志数据会继续写入该文件。要长期控制日志文件的大小,还需要配置 Docker 的日志轮转策略。
2、配置 Docker 日志轮换
配置 Docker 日志轮换来防止日志文件变得过大。编辑或创建 /etc/docker/daemon.json 文件:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
保存文件后,重新启动 Docker 服务:
sudo systemctl restart docker