Процессы и диагностика

Логи и код завершения

Содержание курса

2. Код завершения сохранённого экземпляра

Когда процесс завершает работу, операционная система фиксирует числовой статус возврата. По соглашению стандарта POSIX значение 0 означает успешное завершение, а любое ненулевое число от 1 до 255 указывает на сбой или специальный код выхода.

В Docker статус возврата основного процесса сохраняется в структуре метаданных контейнера. Для точечного чтения таких полей используется команда docker inspect с флагом --format. Шаблон вида '{{.Поле}}' указывает шаблонизатору путь к конкретному значению внутри JSON-дерева метаданных без необходимости разбирать весь массив параметров вручную.

Поле State.ExitCode хранит целочисленный статус возврата процесса PID 1. Проверим код завершения контейнера cf_docker_course_l06_err, в котором процесс завершался через exit 7:

docker inspect --format '{{.State.ExitCode}}' cf_docker_course_l06_err
7

Для комплексной проверки состояния можно запросить одновременно текстовый статус жизненного цикла и код завершения:

docker inspect --format '{{.State.Status}} {{.State.ExitCode}}' cf_docker_course_l06_err
exited 7

Проверим контейнер cf_docker_course_l06_silent, где процесс завершался через команду exit 3:

docker inspect --format '{{.State.Status}} {{.State.ExitCode}}' cf_docker_course_l06_silent
exited 3

Число, возвращаемое через State.ExitCode, относится исключительно к результату работы PID 1 внутри контейнера. Оно не зависит от того, с каким статусом завершились промежуточные диагностические команды на самом компьютере разработчика.

Начать заново?

Помощник начнёт новый диалог по этой задаче. Текущая переписка останется в истории до конца срока хранения.

О переписке

Можно приложить до трёх фото PNG, JPEG или WebP по 5 МБ.

Переписка и фото хранятся 90 дней после последнего принятого сообщения. Преподаватель получит доступ к диалогу, когда вы попросите его помочь.

Проверка решения остаётся отдельным действием.