2015-07-12 9 views
7

При попытке остановить или перезапустить Docker контейнер я получаю следующее сообщение об ошибке:не удается остановить или перезапустить Docker контейнер

$ docker restart 5ba0a86f36ea 
Error response from daemon: Cannot restart container 5ba0a86f36ea: [2] Container does not exist: container destroyed 
Error: failed to restart containers: [5ba0a86f36ea] 

Но когда я бегу

$ docker logs -f 5ba0a86f36ea 

Я могу видеть журналы, поэтому, очевидно, контейнер существует. Есть идеи?

Edit:

извините, я забыл упомянуть об этом:

Когда я бегу docker ps -a я вижу контейнер, как и работает. Однако приложение внутри него работает неправильно, поэтому я хочу перезапустить его или просто получить новую версию этого приложения в Интернете. Но когда я не могу остановить и удалить контейнер, я также не могу запустить и запустить новое приложение, которое будет прослушивать один и тот же порт.

+0

Я бы предположил, что вы можете уничтожить контейнер, но все же есть журналы об этом, когда он был уничтожен. В противном случае ваше наблюдение не имеет смысла. – ikrabbe

+0

Вы хотите запустить новый контейнер со всеми данными и изменениями, удаленными или вы хотите получить как важные файлы из того, что вы использовали? – Paul

+0

Это может произойти, если изображение вашей докеры не имеет надлежащей обработки процесса. –

ответ

5

Это выглядит как docker/docker/issues/12738, видели с грузчиком 1.6 или 1.7:

Некоторые контейнер не правильно остановить, и перезапуск

Мы видим, что этому вопросу много в хостах наших пользователей, когда они модернизировали от 1,5,0 до 1,6,0.
После обновления некоторые контейнеры не могут быть остановлены (давая 500 Server Error: Internal Server Error ("Cannot stop container xxxxx: [2] Container does not exist: container destroyed")) или принудительно уничтожены (давая 500 Server Error: Internal Server Error ("Could not kill running container, cannot remove - [2] Container does not exist: container destroyed")). Процессы все еще запущены на хосте.
Иногда он работает после перезапуска демона докеров.

Есть некоторые обходные пути:

Я пробовал все удаленные вызовы API для этого незавершаемого контейнера и вот результаты:

  • json, stats, changes, top, logs возвращаемых Действительные отзывы
  • stop, pause, wait, kill сообщило 404 (!)

После того как я закончил с удаленным API, я перепроверил docker ps (контейнер был еще там), но потом я повторен Docker убить, и это сработало! Контейнер был убит, и я мог его удалить.

Или:

То, что работало в том, чтобы перезапустить boot2docker на моем хосте. Тогда docker rm -f

$ boot2docker stop 
$ boot2docker start 
$ docker rm -f 1f061139ba04 
+1

Thx, да перезагрузка машины помогла. К сожалению, это сервер, и его не следует перезапускать слишком часто, надеясь, что они исправят ошибку. Поскольку у меня есть докер 1.7 – peter

+0

Согласен, это действительно обходное решение, а не полное разрешение. Я буду следить за этим сообщением об ошибке. – VonC

+0

'docker rm -f containerId' работал для меня – Ari

0

Полезная:

Если вы запускаете скрипт Entrypoint ...скрипт будет работать с притоном

#!/bin/bash -x 

Но остановит контейнер от остановки с

#!/bin/bash -xe 
+7

Я буквально понятия не имею, что это значит –

5

boot2docker не было в моей машине. Итак, я нашел что-то, что сработало для меня.

$ sudo systemctl restart docker.socket docker.service 
$ docker rm <container id> 

Проверьте, подходит ли оно для вас.

Смежные вопросы