Ошибки

Контейнер Docker сразу останавливается: Exited (1), Exited (137), Restarting

Контейнер работает, пока работает программа внутри него. Остановилась программа — остановился и контейнер. Почему она остановилась, расскажут код выхода и логи.

Обновлено 10.10.2026≈ 4 мин чтения
Содержание 9

Как это выглядит

Команды на этой странице вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне. Команда docker run -d отработала без ошибок, а сайт не открывается. Посмотрите все контейнеры:

docker ps -a

В колонке STATUS у вашего контейнера одно из:

  • Exited (1) 5 seconds ago — программа остановилась, в скобках — её код выхода;
  • Restarting (1) 3 seconds ago — программа падает, а Docker снова и снова её перезапускает: так работает политика перезапуска;
  • Created — контейнер создан, но так и не запустился.

Шаг 1. Прочитайте логи

Почему программа остановилась, она пишет сама перед остановкой. В примерах контейнер называется web — подставьте имя своего контейнера. Имена видны в последней колонке NAMES команды docker ps -a.

docker logs --tail 50 web

Последние строки — самые важные. Ищите слова error, fatal, permission denied, not found. Если в логе exec format error, образ собран для другого процессора — разбор этой ошибки.

Шаг 2. Посмотрите код выхода

КодЧто значит
0Программа закончила работу без ошибок. Контейнеру нечего делать: его команда выполнилась и завершилась, а не работает постоянно
1 и другие числа до 128Программа остановилась с ошибкой. Причина — в логах
137Программу принудительно остановили сигналом KILL: 128 + 9. Например, не хватило памяти или контейнер остановили командой
143Программу попросили завершиться сигналом TERM: 128 + 15

Коды больше 128 значат, что программу остановил сигнал: код минус 128 — номер сигнала.

Если код 137: не хватило памяти

docker inspect -f '{{.State.OOMKilled}}' web

true — программу остановила система, потому что закончилась память. Посмотрите, сколько памяти на сервере свободно:

free -h

Если контейнеру задан лимит памяти флагом --memory, увеличьте его. Если памяти мало на всём сервере — уменьшите аппетиты программы в её настройках или возьмите тариф с бо́льшим объёмом памяти.

Если контейнер даже не запустился

Тогда docker run сам выводит ошибку и завершается со своим кодом. Код покажет команда echo $?, выполненная сразу после docker run:

КодЧто значит
125Ошибка самого Docker: например, порт занят или имя занято
126Команду в контейнере нельзя запустить: нет прав на файл или это папка
127Команды в контейнере нет: executable file not found или no such file or directory

Если контейнер перезапускается по кругу

Статус Restarting значит, что у контейнера включена политика перезапуска и программа падает снова и снова. Логи читайте так же — docker logs --tail 50 web. Чтобы остановить круг, пока ищете причину:

docker stop web

Исправьте причину и запустите контейнер снова: docker start web, а для проекта на compose — docker compose up -d в его папке.

Чтобы контейнер поднимался после перезагрузки

Если контейнер остановился после перезагрузки сервера и в логах ошибок нет, ему не задана политика перезапуска. Как её включить — в статье VPS для разработчика: автозапуск после перезагрузки.

Тексты ошибок сверены с исходным кодом Docker 29.1.3 — эта версия ставится из пакетов Ubuntu 24.04. В Docker 28 и более старых версиях часть сообщений звучит иначе.

Источники

Сверено 10 октября 2026 года.

Что почитать дальше

Проверено и обновлено: 10.10.2026