如何查看docker容器的日志

如何查看docker容器的日志,docker,logging,Docker,Logging,我有一个简单的代码,我已经为它创建了一个docker容器,状态显示它运行良好。在代码中,我使用了一些print()命令来打印数据。我想看看打印命令的输出 为此,我看到了docker日志。但它似乎不起作用,因为它没有显示日志。如何检查日志 $ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS

我有一个简单的代码,我已经为它创建了一个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>
$sudo docker ps
容器ID映像命令已创建状态端口名称
a3b3fd261b94 myfirstdocker“蟒蛇3/我的脚本…”22分钟前上升22分钟优雅的达尔文
$sudo docker日志a3b3fd261b94

您需要将日志打印到标准输出的第一点

要检查docker日志,只需使用以下命令:

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>
docker日志——自=1h

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

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

4

让我们再次尝试使用docker createstart和logs命令,看看会发生什么

sudo docker创建busybox echo hi there

命令的输出

现在,我将获取ID并运行docker start,并将启动容器的ID粘贴到容器内部,然后立即退出。

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

需要明确的一点是,通过运行docker日志,我没有以任何形式重新运行或重新启动容器,我只是得到了从该容器发出的所有日志的记录。 docker记录容器id

尝试在您的问题中添加更多信息,以帮助我们重新创建问题。理想的做法是提供一个@tgogos我已经添加了一些信息,您必须使它更加完整。正如相关章节所说:“-有些人可能准备加载这些部分,并实际尝试测试他们将要发布的答案。-问题可能不在您怀疑的部分,而是完全另一部分。”我有一个python代码,其中使用了
print()
。我希望
stdout
print()一样是的,你是对的
print()
将输出发送到
stdout
@SAndrew,我也遇到了同样的问题。你能解决这个问题吗?@Gopi代替了
print()
,我使用python日志模块将日志保存到文件中,然后我可以看到日志了,谢谢。我也会尝试同样的方法。但是我看到当我们做
docker日志时-f
日志会在一段时间后打印出来。我认为docker中有缓冲区,会定期打印日志。