2016-06-21 61 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

然後它很奇怪。安裝可能會中斷。 –