2016-07-23 90 views
-2

我想用docker-compose啓動服務並保持容器運行,以便通過「docker檢查」獲取其IP地址。但是,容器在啓動後總是立即退出。Docker Compose保持容器運行

我試圖在docker-compose.yml中添加「command:[」sleep「,」60「]」和其他東西,但是每當我將該行添加到「command:...」我都不能調用「docker - 組成「,因爲我會得到的消息」無法啓動容器.....系統錯誤:無效的字符'K'尋找價值的開始「

我也嘗試添加」CMD睡眠60「和什麼不是Dockerfile本身,但這些命令似乎並沒有被執行。

有沒有簡單的方法來保持容器活着或解決我的一個問題?

編輯: 這裏是撰寫文件,我想運行:

version: '2' 
services: 
    my-test: 
    image: ubuntu 
    command: bash -c "while true; do echo hello; sleep 2; done" 

它的正常工作。如果我開始這與在OS X泊塢窗,作曲,但如果我嘗試Ubuntu的16.04下同樣它給我上面的錯誤消息。

如果我嘗試用Dockerfile的方針,Dockerfile看起來是這樣的:

FROM ubuntu:latest 
CMD ["sleep", "60"] 

這似乎並沒有做任何事情

編輯2: 我必須糾正自己,原來它是與Dockerfile和docker-compose.yml相同的問題: 每次我向Dockerfile添加「CMD ...」或向撰寫文件添加「command ...」時,我會收到無效錯誤字符。如果我刪除這兩個命令,它的工作完美無瑕。

+1

請包括docker-compose.yml,Dockerfile和您正在嘗試調試的任何腳本。 – BMitch

+0

一個相關的討論,對於那些感興趣的人:[使用Docker Compose的服務器和客戶端的開發流程?](https://stackoverflow.com/q/31372886/320399) – blong

回答

4

爲了保持容器中運行,當你與docker-compose啓動它,請使用以下命令

command: tail -F anything

所以,你的搬運工,撰寫。陽明海運成爲

version: '2' 
services: 
    my-test: 
    image: ubuntu 
    command: tail -F anything 

,您可以使用下面的命令運行shell進入容器

docker exec -i -t composename_my-test_1 bash

其中composename是名docker-compose預規劃到您的容器。

+0

當你完成它時,你如何停止容器?是否有Ctrl + C,Ctrl + Z類型的命令?現在我必須關閉終端才能退出。 – mac10688

1

正如評論者指出,我們必須看到Dockerfile問題給你一個完整的答案,但是這是一個很常見的錯誤。我幾乎可以保證你試圖運行的命令開始一個後臺進程。這可能是你在非Docker情況下運行的命令,但是在Dockerfile中這是錯誤的。例如,如果你正在運行的是通常被定義爲系統服務的,你可以使用類似「systemctl start」的東西。這將在後臺啓動進程,這將無法正常工作。你必須在前臺運行這個進程,這樣整個進程就會被阻塞。

-2

好吧,我發現我的錯誤。在用於構圖的圖像的Dockerfile中,我指定基本圖像應該是ubuntu:latest,但我之前創建了一個名爲ubuntu的圖像,並且該圖像無效。所以我沒有使用原始的ubuntu映像,而是使用了我自己的映像的一個損壞版本,也稱爲ubuntu。

0

在Dockerfile你可以使用命令:

{CMD sleep infinity} 
相關問題