2016-06-21 26 views
3

有一些奇怪的问题让docker在Windows主机上运行,​​但在Linux主机上运行良好。它只是一个简单的节点容器,可以运行吞咽(并最终将附加到其他类似容器的LAMP)。在Windows上的docker-compose - 没有找到或不存在容器命令'sh'

我的搬运工,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确实存在,似乎是一个SYS链接dash如果这是相关的?看起来与我的Linux主机完全一样,这工作正常。

任何想法出了什么问题?

在一个侧面说明,只要我使用泊坞窗从Linux主机它就像一个梦想,但窗户,我总是失去与Windows的具体问题摔跤小时,故宫安装似乎没有正常工作,或挂或采取年龄,与卷不在我的文件等问题等。是docker在windows/boot2docker fubar'ed或只是我?

+0

@PanagiotisKanavos没有'命令'在撰写上运行的容器上?不在主机上? https://docs.docker.com/compose/compose-file/#command – Horse

+0

对于它的价值,我在Linux上进行了转换,并且没有任何困难让/ bin/sh在那里工作。由于我没有有效的package.json,我的测试停止了。 – BMitch

+0

@BMitch谢谢你的尝试!我也有它在Linux上工作得很好,它很烦人,为什么Windows不会玩好:(如果它抱怨theres没有package.json它比我更进一步 – Horse

回答

1

适用于Windows 10和适用于Windows Beta版的Docker。我会说你的机器上有过时的Docker设置或者其他东西。如果您仍在运行boot2docker,请尝试切换到Docker for Windows

在一个侧面说明,任何时候我用的码头工人从Linux主机它就像一个梦想,但窗户,我总是失去与Windows的具体问题,NPM安装似乎没有正常工作,或挂或采取年龄摔跤小时,问题与卷不在我的文档等等。在Windows/boot2docker fubar'ed泊坞窗或只是我?

那么Windows总是增添了几分痛到几乎所有的东西:对,并在早期boot2docker天Windows的支持是相当马车/不完整的,但最新的Windows泊坞释放的东西现在正在运行相当顺利。

+0

好吧,谢谢你检查!:)我仍然在W7上,并且认为新的docker for windows只有W10(boooo !:P),但是我会尽快发挥作用,然后接受这个答案 – Horse

+0

昨天有一个游戏,最后只是将一个Linux发行版安装到了virtualbox上,然后直接在它上面安装了Docker。 W7上的原生码头工具并不是很好,而且很适合用于桥接的vbox。我觉得这很有趣,这是windows的docker无论如何也做不到,但无论如何,谢谢你的回答,并确认它适用于新Docker。只是一个耻辱,这只是W10。接受你的回答:) – Horse

0

(张贴这为答案,因为我没有足够的代表。评论)

出于某种原因,码头工人试图在主机而不是来宾运行的命令。既然它说“容器命令”,你可能真的想用“运行”来加上它,如the online reference

+0

感谢您的输入,但我认为它是引用主'码头运行',前面加上'run'只是给了我'集装箱命令'运行'找不到或不存在。' – Horse

+0

在docker-compose'命令中的yml文件中,应该在容器上执行该命令?例如 - https://docs.docker.com/compose/compose-file/#command – Horse

+0

然后它很奇怪。安装可能会中断。 –