![Windows 上 mingw 下 Docker 中的交互式 bash](https://linux22.com/image/198474/Windows%20%E4%B8%8A%20mingw%20%E4%B8%8B%20Docker%20%E4%B8%AD%E7%9A%84%E4%BA%A4%E4%BA%92%E5%BC%8F%20bash.png)
我在 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 。您可以指定要连接到三个标准流 (STDIN
、STDOUT
、STDERR
) 中的哪一个,如下所示:$ 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