Linux 查看 Docker 容器日志

在使用 Docker 运行容器时,我们经常需要查看容器的日志,以便了解容器的运行状态、排查问题或进行故障排除。本文将介绍如何在 Linux 系统下查看 Docker 容器的日志,并提供一些常用的命令和示例。

Docker 容器日志的存储位置

Docker 容器的日志存储在宿主机的文件系统中,并通过 Docker 的日志驱动机制进行管理。在 Docker 运行时,我们可以通过配置日志驱动来指定容器日志的输出方式和存储位置。

Docker 提供了多种日志驱动选项,包括 json-filesyslogjournald 等。其中,json-file 是 Docker 默认的日志驱动,日志文件存储在 /var/lib/docker/containers/<container_id>/<container_id>-json.log

查看容器日志的基本命令

1. 使用 docker logs 命令

docker logs 命令用于查看容器的日志。通过指定容器的名称或 ID,我们可以获取容器的实时日志输出。

docker logs <container_id or container_name>

2. 使用 docker inspect 命令

docker inspect 命令可以获取有关容器的详细信息,包括容器的日志路径。通过配合其他命令,我们可以直接访问容器的日志文件。

docker inspect --format='{{.LogPath}}' <container_id or container_name>

3. 直接读取容器日志文件

通过查看容器的详细信息,我们可以得知容器日志的存储路径。然后,我们可以使用 cat 命令或其他文件查看命令直接读取容器的日志文件。

cat <container_log_file_path>

示例:查看容器的实时日志

下面是一个示例,演示如何查看正在运行的容器的实时日志。

  1. 使用 docker ps 命令获取正在运行的容器的 ID 或名称。

    docker ps
    
  2. 使用 docker logs 命令查看容器的实时日志。

    docker logs -f <container_id or container_name>
    

    添加 -f 参数可以实时跟踪容器的日志输出。按下 Ctrl + C 可以停止实时跟踪。

示例:通过挂载宿主机目录查看容器日志

有时,我们希望将容器的日志文件保存到宿主机上的特定目录,以便于管理和分析。可以通过挂载宿主机目录到容器的日志文件路径来实现这个需求。

  1. 创建一个用于存储容器日志的目录。

    mkdir /path/to/host/log/directory
    
  2. 运行容器时,使用 -v 参数将宿主机目录和容器的日志路径进行绑定。

    docker run -d -v /path/to/host/log/directory:/path/to/container/log/directory <image_name>
    

    这样,容器的日志文件将会被写入到宿主机上指定的目录中。

示例:通过 Docker Compose 查看容器日志

如果使用 Docker Compose 进行容器编排,我们可以使用 docker-compose logs 命令来查看所有服务的日志。

  1. 在项目的根目录下,执行以下命令来查看所有服务的日志。

    docker-compose logs
    
  2. 若要仅查看某个特定服务的日志,可以使用以下命令。

    docker-compose logs <service_name>