【问题标题】:Run a docker image on Windows results in "oci runtime error: exec: "bash": executable file not found in $PATH."在 Windows 上运行 docker 映像会导致“oci 运行时错误:exec:“bash”:$PATH 中找不到可执行文件。”
【发布时间】:2016-09-10 12:50:12
【问题描述】:

我在 Windows 上运行 Docker(“Docker Toolbox”,而不是“Docker for Windows”)。

我已经构建了一个内部带有 rails 应用程序的图像。它在我的 Mac OS 上正常运行,但在 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 快速启动终端 使用 MINGW64 shell,但旧的 cmd.exe 返回相同。

有人可以帮我解决这个问题吗?我已经尝试了几个小时来寻找解决方案,但 Windows 的答案太少了。

提前谢谢你!

【问题讨论】:

  • 你必须安装MSYS2(MinGW64如果有shell可能没问题),然后在你的windows系统或用户路径中提供bash.exe的路径。

标签: windows docker docker-machine


【解决方案1】:

我还使用带有 MINGW64 的 Windows 7。以下是我以nginx 为例得到的结果:

  $docker run -it nginx bash
  cannot enable tty mode on non tty input

我认为你不能使用 MINGW64 打开一个 tty。

你可以试试:

  $docker run -i nginx bash
  ls
  bin
  ...

您将因此没有提示或任何迹象表明您在容器内。只需运行ls,它应该可以在您的容器中运行。

另一种选择是尝试将winpty 用于tty:

  $ 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

让我知道你的发现。

【讨论】:

  • 感谢您提出的解决方案。会试一试并给你反馈。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-26
  • 1970-01-01
  • 1970-01-01
  • 2018-06-08
  • 2020-12-15
  • 2020-05-13
  • 2018-11-18
相关资源
最近更新 更多