详解Docker在哪里保存日志文件

 更新时间:2021年12月26日 09:31:07   作者:mikes zhang  
本文主要介绍了Docker在哪里保存日志文件,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

调试大多数 Linux 程序通常涉及检查日志文件,这可能是一个复杂的过程。但是,在 Docker 下的容器化环境中运行时,您需要使用更具体的工具来调试生产中的应用程序。

日志存储在哪里?

简单的答案是 Docker 将容器日志存储在其主要存储位置/var/lib/docker/. 每个容器都有一个特定于其 ID 的日志(完整 ID,而不是通常显示的缩短的 ID),您可以像这样访问它:

/var/lib/docker/containers/ID/ID-json.log

这 就是它们的存储位置,但由于它们采用 JSON 格式,因此不易读取,并且必须使用完整的容器 ID 很烦人。Docker 提供了一个内置命令来查看它们:

docker logs -f e4bd48ef3103

在这里,该-f 标志将保持提示打开并“关注”文件中的任何新条目。您还可以使用–tail 该文件,或使用–timestamps 来显示日志时间,或使用–until并 --since 根据时间进行过滤。

如果您使用 Docker Compose,则可以使用其中的 log 命令轻松查看所有日志:

docker-compose  logs

但是,您会注意到的一件事是 STDOUT 和 STDERR,它们对很多事情都很有用,但只显示 Docker 文件中“CMD”指定的入口点的控制台输出。许多应用程序都有自己的专用日志系统,这些系统通常会记录到/var/log/nginx/access.log. 仍然可以通过 Docker 从主机端访问这样的日志。

从容器内的应用程序查看日志

根据容器的不同,这可能不是必需的。例如,默认的 NGINX 容器设置为将其 Docker 日志发送到 STDOUT 以简化日志检查。它使用/dev/stdout 指向日志文件的符号链接来执行此操作,您可以为容器设置类似的内容。

RUN ln -sf /dev/stdout /var/log/nginx/access.log 
&& ln -sf /dev/stderr /var/log/nginx/error.log

但是,如果您想查看容器内的特定文件,您可以这样做。Docker 提供的exec -it 命令允许您在任何正在运行的 Docker 进程中运行任何命令。使用它,您可以在 Docker 容器内跟踪日志文件:

docker exec -it e4bd48ef3103 tail -f log.txt

因为这允许您运行任何命令,所以您可以使用journalctl 或任何其他您想要的调试策略,只要您以docker exec -it. /bin/bash 如果你想跳进去四处逛逛,你甚至可以跑步。

一个更适合主机服务的永久性解决方案是使用 Docker 卷挂载。您可以将类似目录绑定/var/log/nginx 到主机可见的卷。首先,创建一个新卷:

docker volume create nginx-logs

并使用以下命令运行容器–mount:

docker run -d \
--name devtest \
--mount source=nginx-logs,target=/var/log/nginx \
nginx:latest

如果您使用 Docker Compose,则该过程可以自动化:

version: "3.0"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - nginx-logs:/var/log/nginx/
volumes:
  nginx-logs:

这样,主机上的任何日志聚合服务都可以直接摄取日志文件。

查看 Docker 守护进程日志

如果您想查看服务器上整个 Docker 服务的特定日志,而不是任何特定的容器化应用程序,您需要查看journalctl 日志:

sudo journalctl -fu docker.service

这是它在大多数系统上的存储位置,但在某些系统上的位置不同:

  • 亚马逊Linux: /var/log/docker
  • CentOS/RHEL: /var/log/messages | grep docker
  • 苹果: ~/Library/Containers/com.docker.docker/Data/log/vm/dockerd.log
  • Windows: AppData\Roaming\Docker\log\vm\dockerd.log 

到此这篇关于详解Docker在哪里保存日志文件的文章就介绍到这了,更多相关Docker保存日志文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker容器管理之Docker Engine详解

    docker容器管理之Docker Engine详解

    当我们运行集群Docker引擎时,管理器节点是管理集群和存储集群状态的关键组件,在这篇文章中我们将了解manager节点的一些关键功能很重要,以正确部署和维护集群,需要的朋友可以参考下
    2023-08-08
  • Docker资源管理方式

    Docker资源管理方式

    这篇文章主要介绍了Docker资源管理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Docker数据卷挂载方式

    Docker数据卷挂载方式

    文章介绍了Docker数据卷的作用和使用方法,包括数据卷的创建、查看、删除以及挂载,数据卷的主要优点是将数据与容器分离,解耦合,便于操作容器内的数据,保证数据安全,通过挂载数据卷,可以在宿主机上修改容器中的数据,并且可以方便地进行数据的复用和升级维护
    2024-12-12
  • docker-compose部署zabbix+grafana的实现

    docker-compose部署zabbix+grafana的实现

    这篇文章主要介绍了docker-compose部署zabbix+grafana的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-11-11
  • docker实现重新打tag并删除原tag的镜像

    docker实现重新打tag并删除原tag的镜像

    这篇文章主要介绍了docker实现重新打tag并删除原tag的镜像,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Docker+keepalived+nginx实现主从热备的方法示例

    Docker+keepalived+nginx实现主从热备的方法示例

    这篇文章主要介绍了Docker+keepalived+nginx实现主从热备的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • docker start启动容器后仍然exit状态的解决

    docker start启动容器后仍然exit状态的解决

    这篇文章主要介绍了docker start启动容器后仍然exit状态的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • docker离线安装社区版(docker-18.06.3-ce)

    docker离线安装社区版(docker-18.06.3-ce)

    在一些特定的环境下,由于网络限制或者其他原因,我们可能需要在Linux系统上进行离线安装Docker,本文就来介绍一下docker离线安装社区版,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • 用docker搭建selenium grid分布式环境实践之路

    用docker搭建selenium grid分布式环境实践之路

    这篇文章主要介绍了用docker搭建selenium grid分布式环境实践之路,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • 解决Docker中的error during connect异常情况

    解决Docker中的error during connect异常情况

    这篇文章主要介绍了解决Docker中的error during connect异常情况,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11

最新评论