Перезапуск приложения Docker контейнера контейнера приводит к «Это приложение уже запущено» - RUNNING_PID не удаляется

Редактировать: Есть связанная проблема, являющаясяобсуждали на Github но в другом режиме развертывания (пользовательский интерфейс Typesafe, а не Docker).

Я пытался смоделировать перезагрузку системы, чтобы проверить политику перезапуска Docker, которая объявляет о возможности перезапуска контейнеров в правильном порядке.

У меня есть приложение Play Framework, написанное на Java.

Dockerfile выглядит так:

FROM ubuntu:14.04
#
#  [Java8, ...]
#
RUN chmod +x /opt/bin/playapp
CMD ["/bin/bash"]

Я начинаю это с помощью$ docker run --restart=always -d --name playappcontainer "./opt/bin/playapp".

Когда я$ service docker stop && service docker restart а потом$ docker attach playappcontainer консоль говорит мне:

Play server process ID is 7
This application is already running (Or delete /opt/RUNNING_PID file)

Редактировать: Тот же результат, когда я следую рекомендации документации Play дляизменить местоположение файла в /var/run/play.pid с-Dpidfile.path=/var/run/play.pid.

Play server process ID is 7
This application is already running (Or delete /var/run/play.pid file).
Итак: Почему файл, содержащий RUNNING_PID, не удаляется, когда демон docker останавливается, получает перезапуск и перезапускает ранее запущенные контейнеры?

Когда я$ docker inspect playappcontainer, он говорит мне:

"State": {
    "ExitCode": 255,
    "FinishedAt": "2015-02-05T17:52:39.150013995Z",
    "Paused": false,
    "Pid": 0,
    "Restarting": true,
    "Running": true,
    "StartedAt": "2015-02-05T17:52:38.479446993Z"
},

Хотя:

Основной процесс внутри контейнера получит SIGTERM, а после льготного периода - SIGKILL.

отСсылка Docker на $ docker stop

Чтобы убить работающий сервер Play, достаточно отправить процессу SIGTERM для правильного завершения работы приложения.

отДокументация Play Framework по остановке приложения Play

Ответы на вопрос(4)

Ваш ответ на вопрос