2014-07-19 43 views
2

我有一個暴發戶腳本(比如,/etc/init/dtest.conf新貴腳本運行容器不會管理生命週期

start on runlevel [2345] 
stop on runlevel [!2345] 
respawn 
script 
    DID=$(docker.io run -d ubuntu /bin/bash -c "echo Starting;sleep 20;echo Stopping") 
    docker.io attach $DID 
end script 

當發出start dtest,新貴日誌顯示的正常週期「啓動...停止」永遠。但是,如果我發出stop dtest,那麼它似乎正常退出,但容器將在睡眠時間的剩餘時間內運行(如每秒鐘運行docker.io ps所證明)。

不應該有一個簡單的方法來在容器中運行一個Docker鏡像並使其生命週期在那裏管理嗎?

我理想中的腳本將是這樣的:

start on runlevel [2345] 
stop on runlevel [!2345] 
respawn 
exec docker.io run -d ubuntu /bin/bash -c "echo Starting;sleep 20;echo Stopping" 

環境:這是在AWS上,在T2.micro使用Ubuntu 14.04,與apt-get install -y docker.io是唯一安裝

回答

3

你應通過運行以下命令創建一個命名容器:

docker run --name dtest ubuntu /bin/bash -c "echo Starting;sleep 20;echo Stopping" 

然後創建t他下面的新貴腳本(注意-a標誌)如您所願

start on runlevel [2345] 
stop on runlevel [!2345] 
respawn 
script 
    /usr/bin/docker start -a dtest 
end script 

將管理這個容器的生命週期,我還建議在-r標誌添加到主泊塢窗守護進程執行腳本,讓搬運工當主機重新啓動(而不是這將由新貴腳本來完成)將不會自動重啓你的容器

sudo sh -c "echo 'DOCKER_OPTS=\"-r=false\"' > /etc/default/docker" 

配置Docker容器像暴發戶是一個偉大的詳細here描述與流程管理器,工作過程

+0

這讓我真的很接近,但仍然需要我關閉命名容器,然後才能通過新貴進行管理....我問了一個後續問題:http://stackoverflow.com/questions/24872480/create-docker-container -from-image-without-starting-it –

+0

@MarshallAnschutz很好的問題。我在那裏添加了我的答案。基本上可以通過使用Docker Remote API來實現。 –