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