2015-03-13 95 views
2

我遇到了麻煩泊塢窗容器時,它是由systemd開始熬夜後停止。當我與sudo docker start containername手動啓動它,它保持了不麻煩,但是當它通過systemd開始sudo systemctl start containername,並保持10秒鐘熬夜然後莫名其妙的掛掉了,在系統日誌類似如下的離開的消息:泊塢窗和systemd - 服務10秒

Mar 13 14:01:09 hostname docker[329]: time="2015-03-13T14:01:09Z" level="info" msg="POST /v1.17/containers/containername/stop?t=10" 
Mar 13 14:01:09 hostname docker[329]: time="2015-03-13T14:01:09Z" level="info" msg="+job stop(containername)" 

我我會假設它的systemd殺死進程,但我不能工作了,爲什麼它可能會發生。該systemd單元文件(/etc/systemd/system/containername.service)是非常簡單的,如下:

碼頭工人開始罰款的引導,它看起來像它甚至開始泊塢窗容器,但沒有如果在啓動或手動啓動,它會在10秒後退出。感謝收到!

+0

檢查了這一點。在解決這個問題之前,我已經離開了碼頭工。 https://github.com/ibuildthecloud/systemd-docker – user2105103 2015-03-13 18:48:40

+0

謝謝,我會檢查出來!我解決了這個問題,但這很容易阻止我在將來陷入困境。 – n00b 2015-03-14 17:05:41

回答

2

解決方案:開始命令似乎需要的-a(附加)參數在systemd腳本中使用時所描述in the documentation。我想這是因爲它在默認情況下叉的背景下,雖然systemd expect daemonfeature似乎並不解決問題。

docker-start手冊頁:

-a, --attach=true|false 
    Attach container's STDOUT and STDERR and forward all signals to the process. The default is false. 

整個systemd腳本就變成了:

[Unit] 
Description=MyContainer 
After=docker.service 
Requires=docker.service 

[Service] 
ExecStart=/usr/bin/docker start -a containername 
ExecStop=/usr/bin/docker stop containername 

[Install] 
WantedBy=multi-user.target 
+0

泊塢窗客戶端不叉的背景'-d',它只是完成並退出。該容器仍在Docker主機上運行,​​但systemd不知道有關此事的任何信息。 – 2015-04-08 10:59:32