在Windows上运行docker映像将导致;oci运行时错误:exec:";bash";:在$PATH中找不到可执行文件;

在Windows上运行docker映像将导致;oci运行时错误:exec:";bash";:在$PATH中找不到可执行文件;,windows,docker,docker-machine,Windows,Docker,Docker Machine,我在Windows上运行Docker(“Docker工具箱”,而不是“Docker for Windows”) 我构建了一个内置rails应用程序的图像。它可以在我的Mac操作系统上正常工作,但在Windows上会影响生产 在两台机器上使用Docker 1.12和Docker machine 0.8.0 当我创建一台机器并尝试从映像运行容器时,我会: docker run -it myRepo:myTag bash 这在Mac OS上为我打开了一个交互式终端,但Windows 7和Window

我在Windows上运行Docker(“Docker工具箱”,而不是“Docker for Windows”)

我构建了一个内置rails应用程序的图像。它可以在我的Mac操作系统上正常工作,但在Windows上会影响生产

在两台机器上使用Docker 1.12和Docker machine 0.8.0

当我创建一台机器并尝试从映像运行容器时,我会:

docker run -it myRepo:myTag bash
这在Mac OS上为我打开了一个交互式终端,但Windows 7和Windows Server 2011均响应:

“来自守护进程的错误响应:oci运行时错误:exec:“bash”: 在$PATH中找不到可执行文件。“

我通过Docker Quickstart终端使用MINGW64shell,但是旧的cmd.exe返回相同的结果

有人能帮我解决这个问题吗?我已经尝试了几个小时来寻找解决方案,但是对于Windows来说,答案太少了


提前谢谢你

我也使用Windows 7和MINGW64。以下是我使用
nginx
作为示例得到的结果:

  $docker run -it nginx bash
  cannot enable tty mode on non tty input
我认为你不能用MINGW64打开tty

您可以尝试:

  $docker run -i nginx bash
  ls
  bin
  ...
因此,您将不会收到任何提示或任何您在容器内的指示。只要运行
ls
,它就会在您的容器中工作

另一个选项是尝试对tty使用
winpty

  $ winpty docker run -it myRepo:myTag bash
  root@644f59e6f818:/#
你试过了吗

  $ winpty docker run -it myRepo:myTag /bin/bash
我不知道您提到的问题,但我以前在映射卷时见过它

如果使用MINGW64映射卷,则需要在本地映射之前添加额外的
/
。例如:

   docker run -p 8080:80 -v "/$PWD":/var/share/nginx/html nginx

让我知道您的发现。

您必须安装MSYS2(如果它有外壳,MinGW64可能还可以),然后在windows系统或用户路径中提供
bash.exe的路径。感谢您提出的解决方案。我会尝试一下并给你反馈。