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

时间:2016-06-21 12:38:08

标签: 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 node

它返回

Container command 'sh' not found or does not exist.

由于我理解command命令在容器(而不是主机)上运行,这应该没问题?我也尝试过/bin/sh并遇到同样的问题。 /bin/sh确实存在,如果相关,似乎是dash的sym链接?看起来与我的linux主机完全相同,这可以正常工作。

任何想法出了什么问题?

在旁注 ,任何时候我从linux主机使用docker它就像一个梦想,但是Windows我总是在与Windows特定问题摔跤时失去时间,npm installs似乎没有正常工作或挂起或花费很长时间,卷不在我的文档中的问题等。在Windows / boot2docker上的docker fubar或者只是我?

2 个答案:

答案 0 :(得分:1)

在Windows 10和Docker for Windows beta上运行正常。我要么说过时的Docker设置或者你的机器上有东西被堵塞了。如果您仍在运行boot2docker,请尝试切换到Docker for Windows

  

另一方面,无论何时我使用来自linux主机的docker它都像梦一样,但是Windows总是因为Windows特定问题而无法摔跤,npm安装似乎无法正常工作或挂起或需要多长时间,卷问题不是在我的文件等等。在Windows / boot2docker上的docker是fubar还是只是我?

Windows总是给几乎所有东西带来一些痛苦:p,在早期的boot2docker时代,Windows支持非常错误/不完整,但是最新的Docker for Windows版本现在运行起来非常顺利。

答案 1 :(得分:0)

(将此作为答案发布,因为我没有足够的代表发表评论)

出于某种原因,Docker尝试在主机而不是来宾中运行命令。因为它说"容器命令"你实际上可能希望在" run"之前加上它,就像the online reference一样。