全球主机交流论坛

标题: 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 的问题,你要
  1. 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