使用 WSL2 在 Docker Desktop 上运行的容器没有实时输出
Posted
技术标签:
【中文标题】使用 WSL2 在 Docker Desktop 上运行的容器没有实时输出【英文标题】:No live output from containers running on Docker Desktop with WSL2 【发布时间】:2021-08-08 22:37:50 【问题描述】:我正在开发一个在 docker 容器(django、celery、postgres、redist...等)中运行的 python-django 应用程序。它在带有 WSL2-Debian 和 Docker 桌面的 Windows 10 上运行。
在我的工作中,我需要观察所有这些容器的控制台,这样我就可以监控应用程序的行为,比如当你运行 docker-compose up
时,你就可以让它们全部上线。
当您在窗口化的 Docker 桌面应用程序中单击容器时,您可以看到容器的控制台输出,但不是实际的 - 它看起来直到某个时间点才有效,并且控制台输出没有更新。 我记得它在两到三个 Docker Desktop 更新之前就开始工作了,我确信它是实时的,但不是现在。
我是否更改了设置或 Docker Desktop 被窃听?
附言。当我使用 docker-compose up
(不带 -d)启动容器时,我可以在我的 shell 控制台上观察实时日志,但在 Docker Desktop 中却看不到了。
任何帮助如何恢复 Docker 桌面实时控制台视图?
【问题讨论】:
GitHub 上有一个关于此的问题。这一定是一个实际的错误:github.com/docker/for-win/issues/11251 我确认降级到 Docker Desktop v3.3.1 解决了这个问题。 有一个 Docker Desktop 快照可供您测试问题是否已解决;见my edited answer below Docker Desktop 3.6.0 应该可以解决这个问题。 【参考方案1】:Docker Desktop 3.4(昨天 6 月 9 日发布)应该已经解决了 docker/for-win
issue 11251。
升级后我看不到错误(使用普通的docker-compose
,而不是测试版docker-compose
v2)。
但是,正如 the OP twk 和 issue 11251 所评论的:
实时日志以某种方式损坏 - 在每个新行之后添加额外的换行符,但历史日志条目(例如,当您切换到/从另一个容器时)显示条目之间没有换行符(这没关系)。
Update June 29th 来自Mathieu Champlon
抱歉,花了一些时间,但我们现在有一个内部版本可以修复它,如果您想尝试一下:
win/stable/amd64/66242/Docker Desktop Installer.exe
2021 年 8 月更新:Issue 11251 just closed:
Docker Desktop 3.6.0 已发布,其中包含对此问题的修复。
【讨论】:
还有一个小问题:实时日志用换行符分隔,但一般都可以。 @twk 感谢您的反馈。我已将您的评论包含在答案中以提高知名度。【参考方案2】:这是 Docker Desktop v3.3.3 中的一个错误
GitHub 问题:@Drarig29 指出的https://github.com/docker/for-win/issues/11251
【讨论】:
实际上,它在 Docker Desktop v3.3.2 中也不起作用。以上是关于使用 WSL2 在 Docker Desktop 上运行的容器没有实时输出的主要内容,如果未能解决你的问题,请参考以下文章
基于WSL2 的 Docker Desktop 启动时 Failed to set version to docker-desktop exit code -1的解决方法