windows - Windows 上的 docker-compose - 容器命令 'sh' 未找到或不存在

标签 windows docker sh

让 docker 在 windows 主机上运行时遇到一些奇怪的问题,但在 linux 主机上它很好。它只是一个可以运行 gulp 的简单节点容器(并且最终将附加到其他类似 LAMP 的容器)。

我的 docker-compose.yml

version: '2'
services:
 node:
  build: ./node
  container_name: cont_node
  ports:
  - "35733:35733"
  volumes:
  - ~/docker/project/www:/var/www/html/
  command: "sh -c 'npm install && bower install && gulp'"

我的 Dockerfile

FROM node:4-onbuild

RUN npm config set registry http://registry.npmjs.org/

# Define working directory.
WORKDIR /var/www/html/

COPY ./package.json /var/www/html/

RUN npm install -g gulp-cli

CMD ["bash"]

所以当我运行的时候

docker-compose up 节点

返回

容器命令“sh”未找到或不存在。

因为我理解 command 命令在容器(而不是主机)上运行,这应该没问题吧?我也用 /bin/sh 尝试过,但遇到了同样的问题。 /bin/sh 确实存在,如果相关的话,似乎是到 dash 的符号链接(symbolic link)?看起来与我的 Linux 主机完全相同,但它运行良好。

知道哪里出了问题吗?

旁注,每当我从 linux 主机使用 docker 时,它就像梦一样工作,但 windows 我总是浪费时间来解决 windows 特定问题,npm 安装似乎无法正常工作或挂起或花费时间,卷的问题不在我的文档中,等等。Windows 上的 docker/boot2docker fubar'ed 还是只有我?

最佳答案

我在 Windows 10 和 Docker for Windows beta 上运行良好。我会说要么是过时的 Docker 设置,要么是你的机器上出现了问题。如果您仍在运行 boot2docker,请尝试切换到 Docker for Windows .

On a side note, anytime I use docker from a linux host it works like a dream, but windows I always lose hours wrestling with windows specific issues, npm installs dont seem to work properly or hang or take ages, issues with volumes not in my documents, etc. Is docker on windows / boot2docker fubar'ed or just me?

好吧,Windows 总是给几乎任何东西都增加了一点痛苦:p,在早期的 boot2docker 时代,Windows 支持有很多错误/不完整,但是随着最新的 Docker for Windows 版本的发布,现在一切都运行得非常顺利。

关于windows - Windows 上的 docker-compose - 容器命令 'sh' 未找到或不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37944669/

相关文章:

Windows 重定向错误无法使用附加功能

对 Winapi 路径和文件名的说明(W 函数和 A 函数)

c++ - 通过 C++ 与 OS 函数交互

python - 在Docker容器中的 headless Chrome中使用python中的Selenium

linux - 如何在双引号内执行 Linux shell 变量?

python - 在Supervisord中通过sh脚本启动程序

linux - shell脚本中的命令返回

windows - 在 Windows 中 merge 为 gitk 中的 diff 工具

mysql - docker-compose,从链接迁移。 (Flask应用程序+mysql)

docker - 如何使用用于REST通信的端口映射Hyperledger Fabric对等体(2nd,3rd,4th)