【发布时间】:2020-07-19 12:49:05
【问题描述】:
如果我跑
docker run alpine sleep 120
在 linux docker 主机上,可以按 CTRL-C 来停止容器。
如果我在适用于 Windows 的 Docker Desktop 上尝试相同的操作,则相同的方法不起作用。我测试了 WSL1、GitBash、CMD 和 powershell。 shell 会立即返回,但如果您执行docker ps,您会发现容器仍在运行...
我知道了,使用
docker run --init -it alpine sleep 120
几乎为我解决了这个问题。不幸的是,我需要重定向输出,这与 -t 的用法冲突(令人惊讶的是,仅在 Windows 上。在 Linux 上,docker 对此也很满意,但这次真的需要 --init,否则它会阻止 ctrl-c)
docker run --init -it alpine sleep 120 > somefile.log
即使在 GitBash 中,使用 winpty 也不起作用。
编辑:我刚刚意识到,最后一个命令似乎也适用于 CMD 和 PowerShell。只有 WSL 和 GitBash 行为不端...
如何让容器停止在 WSL 和 GitBash 中的 Windows 上使用 CTRL-C?
【问题讨论】: