Windows 上 mingw 下 Docker 中的交互式 bash

Windows 上 mingw 下 Docker 中的交互式 bash

我在 Windows 上使用 bash shell (Mingwg64),从 docker 容器运行 bash。

Tobi@DESKTOP MINGW64 /
$ docker run -i debian bash
ls

给出结果:bash: line 1: $'ls\r': command not found据我所知,这是因为当我按回车键时\r,通常会有一个前缀\n- 就像我在 Windows 上一样。

有人知道解决这个问题的好办法吗?

答案1

的文档docker run告诉:

如果您不指定,-a则 Docker 将附加到 stdout 和 stderr 。您可以指定要连接到三个标准流 ( STDINSTDOUTSTDERR) 中的哪一个,如下所示:

$ docker run -a stdin -a stdout -i -t ubuntu /bin/bash

对于交互式进程(如 shell),必须-i -t一起使用才能为容器进程分配 tty-i -t通常的写法-it如您将在后面的示例中看到的那样。-t当客户端从管道接收标准输入时禁止指定
[...]

所以你应该使用-it而不是-i终端层将有机会将终端输入转换\r\n\n目标系统:

$ docker run -it debian bash

相关内容