进入java容器看,看不出来
排查
阿尔格纳威潘三矿深井虚拟机,存储空间被占满了,发现是kykj容器占用得多:
这个日志确实大:74G
这可能是spring boot框架连接mysql失败时,不停重连打印日志导致的
Docker容器本身并不提供自动清理日志的功能。Docker日志主要由Docker守护进程负责处理,并存储在宿主机的文件系统中。
Docker 默认使用的日志驱动是 json-file。这种驱动会将容器的标准输出和标准错误输出存储为JSON格式的日志文件。这些日志文件位于宿主机上,通常存放在每个容器的目录下,路径类似于 。
使用 json-file 日志驱动的好处是简单易用,且可以直接通过 命令查看容器的日志输出。但是,这种方式也可能导致日志文件快速增长,尤其是对于日志输出较多的应用,因此需要合理配置日志的最大大小和文件轮换数量,以避免占用过多的磁盘空间。
解决方法:配置docker run日志大小数量限制(日志驱动配置json-file)
命令 是在Docker中启动一个新容器的常用命令。以下是命令中各部分的详细解释:
-
- 这是Docker中用于创建并启动新容器的基本命令。
-
- 这两个选项通常一起使用:
- 或 保持容器的标准输入开启。
- 或 分配一个伪终端,这使得我们可以与容器进行交互。
-
- 指定使用 作为日志驱动,这是Docker的默认日志驱动,用于将容器的标准输出和错误输出记录到JSON格式的文件中。
-
- 设置日志文件的最大大小为10MB。当日志文件达到这个大小时,Docker会自动轮转日志,即关闭当前日志文件,并开启一个新的日志文件继续记录。
-
- 设置最多保留3个轮转的日志文件。当创建新的日志文件时,如果已经有3个日志文件,最旧的日志文件将被删除。
-
- 指定Docker镜像的名称,容器将基于此镜像创建。这个名称可能是本地镜像的名称或者是仓库中的镜像名称。
示例
要在你的 Docker 命令中添加日志管理功能,你可以加入 和 选项来控制日志文件的大小和数量。以下是你的命令更新后的版本,设置每个日志文件最大为100MB,并且最多保留3个日志文件:
在这个命令中:
- 指定日志驱动为 ,这是Docker的默认日志驱动。
- 设置每个日志文件的最大大小为100MB。
- 设置最多保留3个日志文件。
这种配置可以有效管理容器的日志文件,避免日志文件过大消耗宿主机的磁盘空间。同时,通过轮转和限制文件数量,保持日志的新鲜度和可管理性。
在14服务器上测试了是可行的,日志大小上限为100MB,上限为3个,不断生成日志,测试发现一旦日志总大小满300MB,就会删除旧的那个,然后日志总大小变成200MB。
在Docker的目录下,有几个重要的子目录,这些目录用于存储Docker运行时的不同数据和文件。这里是各个目录的主要内容和用途:
-
:存储与Docker内容信任相关的数据。内容信任是Docker的安全特性,用于确保镜像未被篡改。
-
:包含有关Docker网络配置的数据。这些文件用于管理Docker容器间的网络连接。
-
:存储Docker容器的运行时数据。每个容器会在此目录下有一个对应的子目录,其中包含容器的配置文件、日志、以及一些状态文件。
-
:如果Docker被配置为使用Swarm模式,该目录会用来存储Swarm模式相关的数据。Swarm是Docker的原生集群管理和编排工具。
-
:存储Docker卷的数据。Docker卷用于数据持久化和数据共享,允许容器间或主机和容器间共享数据。
-
:这是Docker使用的存储驱动之一,默认情况下用于管理容器和镜像的层。每个层存储文件的改动,所有层合起来形成完整的文件系统。
-
:临时文件存储目录,用于存放处理过程中的临时文件。
-
:存储镜像的元数据。这些元数据包括镜像的配置信息、层的信息等。
-
:用于存储BuildKit构建器的数据。BuildKit是Docker的一种现代镜像构建工具,优化了构建过程和资源利用。
-
:存储Docker插件的数据。这些插件可以扩展Docker的功能,如网络、存储卷驱动等。
-
:如果有配置自定义的容器运行时,其数据会存储在这个目录下。