2015-10-02 5 views
0

Я запускаю CoreOS Stable 776.4.0.Файл ядра Coreos Systemd - держите контейнер в рабочем состоянии

Я хочу, чтобы контейнер постоянно работал. Но я не могу заставить его работать. Когда я ожидаю, что контейнер перезагрузится, когда он будет убит. Но это не так. Раньше я работал. Но я не помню, как я это сделал.

Пожалуйста, помогите!

я убью его docker stop proxy

Restart=always будет постоянно запускать и останавливать контейнер.

Это мой файловый файл systemd.

[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 

ответ

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, чтобы гарантировать, что контейнер работает, даже после перезагрузки.

0

Извините, я задал глупый вопрос. Проблема в том, что я запускал контейнер в качестве демона. Удалить -d решила проблему.

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