我有一个简单的代码,我已经创建了一个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>
答案 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)
让我们尝试使用 docker create start 然后再次记录命令,看看会发生什么。
sudo docker create busybox echo hi there
现在我将获取 ID 并运行 docker start 并粘贴启动容器的 ID,它在容器内部执行 echo high,然后立即退出。
现在我想回到那个停止的容器并获取其中发出的所有日志。 为此,我可以在 docker logs 中运行,然后将 ID 粘贴到其中,我将看到当容器运行时,它已打印出字符串 Hi there。
需要明确的一件事是,通过运行 docker logs 我不会以任何方式重新运行或重新启动容器以任何形状或形式,我只是获得了从那里发出的所有日志的记录容器。 docker 记录 container_id