全球主机交流论坛
标题:
docker删除文件,释放空间
[打印本页]
作者:
igoogle
时间:
2024-1-19 12:34
标题:
docker删除文件,释放空间
docker容器被很多个.log文件塞满了,宿主机100多G都被塞满了。。
进入容器删了.log文件后磁盘空间不会释放。。
网上查到的方法是要进程id目录,一个个清理,但是太多了。。
有没有简单的方法啊?
作者:
igoogle
时间:
2024-1-19 13:02
Up. Up
作者:
icon
时间:
2024-1-19 13:07
gpt:
当 Docker 容器的日志文件占满了磁盘空间,即使在容器内部删除了这些 .log 文件,由于 Docker 容器和其宿主机之间的文件系统是分离的,所以你可能不会立即看到宿主机上磁盘空间的释放。这是因为即使文件在容器内被删除,它们仍然占用着宿主机上的空间,除非相应的容器被停止。
要解决这个问题,你可以采取以下步骤:
停止相关容器:
在删除日志文件之后,你需要重启相关的 Docker 容器。这样做会释放被删除文件占用的空间。你可以使用命令 docker restart [container_id] 来重启容器。
清理无用的数据:
Docker 提供了一个方便的命令来清理未使用的数据,包括停止的容器、未使用的网络和悬挂的镜像。使用命令 docker system prune 可以帮助释放空间。要小心使用这个命令,因为它会删除所有停止的容器和未使用的镜像。
配置日志驱动:
为了避免将来的日志文件占用过多空间,你可以配置 Docker 容器使用的日志驱动。例如,你可以设置日志文件的最大大小和文件数。可以在启动容器时通过 --log-opt 标志来设置,例如:
arduino
Copy code
docker run -d --name my_container --log-opt max-size=10m --log-opt max-file=3 my_image
这个命令将日志文件的大小限制为10MB,并且只保留最新的3个日志文件。
使用外部日志管理工具:
如果你的容器产生大量日志,考虑使用外部日志管理工具,如 ELK stack (Elasticsearch, Logstash, Kibana) 或 Fluentd。这些工具可以帮助你更有效地管理日志,包括压缩、轮换和远程存储功能。
定期清理日志:
定期清理日志也是一个好习惯。你可以编写脚本定期执行日志清理任务,或者使用如 logrotate 这样的工具来管理日志文件。
通过上述方法,你可以有效管理 Docker 容器的日志文件,避免未来出现磁盘空间被占满的问题。
作者:
damoo
时间:
2024-1-19 13:07
容器删除再新建不行?
作者:
wisdom
时间:
2024-1-19 13:08
docker system prune -a --force
我一直用的这个,有用的话告诉我
作者:
dfdfcvbcv
时间:
2024-1-19 13:11
本帖最后由 dfdfcvbcv 于 2024-1-19 13:14 编辑
重启容器试试,或者可以试试把这个容器 docker save成一个镜像,在拿这个镜像重新运行一个容器,应该和你之前的是一样的
容器只是临时性的东西,数据应该映射到宿主机上,容器随用随丢
作者:
手握键盘
时间:
2024-1-19 14:01
wisdom 发表于 2024-1-19 13:08
docker system prune -a --force
我一直用的这个,有用的话告诉我
我用的这个 alias dockercls="docker volume prune -f && docker system prune -f"
作者:
catwalk6540
时间:
2024-1-19 14:04
我这的容器日志,不会超过 100M 的
cat /etc/docker/daemon.json
{
"log-opts": {
"max-size": "100m"
}
}
作者:
catwalk6540
时间:
2024-1-19 14:05
“进入容器删了.log文件后磁盘空间不会释放。。”
这是 linux 的问题,你要
echo '' > log.json
复制代码
才会释放空间
作者:
ProphetN
时间:
2024-1-19 14:08
创建容器的时候添加 --log-driver=journald \ 参数,把容器的日志管理交给journald处理。
作者:
l王1-
时间:
2024-1-19 16:34
cat > /etc/docker/daemon.json <<EOF
{
"log-driver": "json-file",
"log-opts": {
"max-size": "20m",
"max-file": "3"
},
"ipv6": true,
"fixed-cidr-v6": "fd00:dead:beef:c0::/80",
"experimental":true,
"ip6tables":true
}
EOF
然后重启 Docker 服务:systemctl restart docker
欢迎光临 全球主机交流论坛 (https://sunk.eu.org/)
Powered by Discuz! X3.4