Coreos Systemd单元文件 - 保持容器运行

时间:2015-10-02 08:55:35

标签: coreos

我正在运行CoreOS Stable 776.4.0。

我想让容器一直运行。但我无法让它发挥作用。当我希望容器在被杀死时重启。但事实并非如此。我之前得到了它。但我不记得我是怎么做到的。

请帮助我!

我通过docker stop proxy

杀了它

Restart=always将持续停止并启动容器。

这是我的系统单元文件。

[Unit]
Description=nginx reverse proxy
After=docker.service
Requires=docker.service

[Service]
TimeoutStartSec=0
Restart=on-failure
ExecStartPre=-/usr/bin/docker stop proxy
ExecStartPre=-/usr/bin/docker rm proxy
ExecStart=/usr/bin/docker run -d --name proxy -p 80:80 -v          
          /var/run/docker.sock:/tmp/docker.sock:ro zhex900/nginx-proxy

[Install]
WantedBy=multi-user.target

2 个答案:

答案 0 :(得分:1)

你当前的问题是:

ExecStart=/usr/bin/docker run -d --name proxy -p 80:80 -v          
      /var/run/docker.sock:/tmp/docker.sock:ro zhex900/nginx-proxy

您正在将-d选项传递给docker客户端,这意味着"在后台启动容器并立即返回"。由于客户端退出,systemd将其解释为失败并尝试重新启动服务。

最简单的解决方案是从命令行中删除-d

另一种选择是使用systemd,并简单地使用docker run --restart=always ...启动容器,这将导致Docker确保容器正在运行,即使重启后也是如此。

答案 1 :(得分:0)

对不起,我问了一个愚蠢的问题。问题是我将容器作为守护进程运行。删除-d解决了问题。

ExecStart=/usr/bin/docker run --name proxy -p 80:80 \ 
           -v /var/run/docker.sock:/tmp/docker.sock:ro zhex900/nginx-proxy