Докер: контейнер снова перезапускается снова

Сегодня я развернул экземпляр MediaWiki, используя образ appocktainers/mediawiki docker, и теперь у меня есть новая проблема, для которой я не могу найти никакой подсказки. После того, как вы попытаетесь подключиться к контейнеру frontwiki mediawiki, используя:

docker attach mediawiki_web_1

который отвечает на Terminated по моей конфигурации по той причине, которую я игнорирую, также пытается:

docker exec -it mediawiki_web_1 bash

Я получаю что-то близкое к сообщению об ошибке:

Error response from daemon: Container 81c07e4a69519c785b12ce4512a8ec76a10231ecfb30522e714b0ae53a0c9c68 is restarting, wait until the container is running

И есть моя новая проблема, потому что этот контейнер никогда не перестает перезапускать. Я вижу, что с помощью docker ps -a, который всегда возвращает STATUS Restarting (127) x seconds ago.

Дело в том, что я могу остановить контейнер (я тестировал), но запуск его снова, похоже, возвращает его в цикл перезапуска.

Любая идея, что может быть проблемой здесь? Все это работало должным образом, пока я не попытался подключиться к нему...

Мне грустно: - (

Ответ 1

Команда docker logs покажет вам результат, создаваемый контейнером, когда вы не запускаете его в интерактивном режиме. Вероятно, это сообщение содержит сообщение об ошибке.

docker logs --tail 50 --follow --timestamps mediawiki_web_1

Вы также можете запустить новый контейнер на переднем плане с помощью docker run -ti <your_wiki_image>, чтобы узнать, что это делает. Возможно, вам понадобится сопоставить некоторую конфигурацию с вашим docker-compose yml с командой docker.

Я бы предположил, что присоединение к медиа-вики-процессу вызвало крах, который повредил что-то в ваших данных.

Ответ 2

Когда docker kill CONTAINER_ID docker stop -t 1 CONTAINER_ID docker kill CONTAINER_ID не работает и docker stop -t 1 CONTAINER_ID также не работает, вы можете попытаться удалить контейнер:

docker container rm CONTAINER_ID

У меня была похожая проблема сегодня, когда контейнеры были в непрерывном цикле перезапуска.

Проблема в моем случае была связана с тем, что я был плохим инженером.

В любом случае, я исправил проблему, удалив контейнер, исправив мой код, а затем заново собрав и запустив контейнер.

Надеюсь, что это поможет любому, кто застрянет с этой проблемой в будущем

Ответ 3

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

Когда вы запускаете контейнер, убедитесь, что вы его отсоединили "-d", если вы собираетесь подключиться к нему. (например, "docker run -d mediawiki_web_1" )

Ответ 4

tl; dr Перезапускается с кодом состояния 127, что означает, что в вашем контейнере отсутствует файл/библиотека. Запуск нового контейнера просто может это исправить.

Объяснение:

Что касается моего понимания Docker, то вот что происходит:

  1. Контейнер пытается запустить. В процессе он пытается получить доступ к файлу/библиотеке, которая не существует.
  2. Он выходит с кодом состояния 127, который объясняется в этом ответе.
  3. Обычно это то место, где контейнер должен был полностью выйти, но он перезапускается.
  4. Он перезапускается, потому что для политики перезапуска должно быть задано значение, отличное от no (по умолчанию) (с использованием флага командной строки --restart или restart ключа docker-compose.yml) при запуске контейнера.

Решение: Возможно, что-то повредило ваш контейнер. Начинать новый контейнер в идеале должно делать работу.

Ответ 5

В моем случае контейнер nginx продолжал перезапускаться, я проверил журналы контейнера nginx и узнал, что в файлах .crt и .key ненужного домена есть ошибки, поэтому я удалил соответствующие файлы .conf,.crt и .key, а затем перезапустил nginx. Что это nginx работает нормально без перезагрузки.

Ответ 6

Я забыл, что Minikube работает в фоновом режиме, и это всегда перезапускает их обратно

Ответ 7

Это также может иметь место, если вы создали службу systemd которая имеет:

[Service]
Restart=always
ExecStart=/usr/bin/docker container start -a my_container
ExecStop=/usr/bin/docker container stop -t 2 my_container