如何查看docker容器的日志

时间:2017-12-15 09:30:20

标签: docker logging

我有一个简单的代码,我已经创建了一个docker容器,状态显示它正常运行。在代码中我使用了一些print()命令来打印数据。我想看看打印命令输出。

为此,我看到了docker日志。但它似乎没有工作,因为它没有显示日志。如何查看日志。?

 $ sudo docker ps
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS                                            NAMES
a3b3fd261b94        myfirstdocker                     "python3 ./my_script…"   22 minutes ago      Up 22 minutes                                                        elegant_darwin

 $ sudo docker logs a3b3fd261b94
 <shows nothing>

3 个答案:

答案 0 :(得分:11)

您需要将日志打印到stdout的第一点。

要检查泊坞窗日志,只需使用以下命令:

docker logs --help

Usage:  docker logs [OPTIONS] CONTAINER

Fetch the logs of a container

Options:
      --details        Show extra details provided to logs
  -f, --follow         Follow log output
      --help           Print usage
      --since string   Show logs since timestamp
      --tail string    Number of lines to show from the end of the logs (default "all")
  -t, --timestamps     Show timestamps

一些例子:

docker logs --since=1h <container_id>

答案 1 :(得分:0)

如果没有那么多假设输出(例如脚本只是尝试打印几个字节),我怀疑python正在缓冲它。

尝试向输出添加更多数据以确保刷新缓冲区,并且还使用PYTHONUNBUFFERED = 1(尽管python3仍然可以进行一些缓冲,尽管有这样的设置)。

答案 2 :(得分:0)

enter image description here4

让我们尝试使用 docker create start 然后再次记录命令,看看会发生什么。

sudo docker create busybox echo hi there

命令的输出 enter image description here

现在我将获取 ID 并运行 docker start 并粘贴启动容器的 ID,它在容器内部执行 echo high,然后立即退出。 enter image description here

现在我想回到那个停止的容器并获取其中发出的所有日志。 为此,我可以在 docker logs 中运行,然后将 ID 粘贴到其中,我将看到当容器运行时,它已打印出字符串 Hi there

需要明确的一件事是,通过运行 docker logs 我不会以任何方式重新运行或重新启动容器以任何形状或形式,我只是获得了从那里发出的所有日志的记录容器。 docker 记录 container_id enter image description here