Контейнер сразу переходит в Exited (0) после docker run
Образ веб-сервера собран так:
FROM debian:12
RUN apt-get update && apt-get install -y nginx
COPY nginx.conf /etc/nginx/nginx.conf
CMD ["service", "nginx", "start"]
Запуск на сервере:
$ docker run -d --name web myweb:1.0
9f2c1b7ad33e
$ docker ps -a
CONTAINER ID IMAGE COMMAND STATUS
9f2c1b7ad33e myweb:1.0 "service nginx start" Exited (0) 2 seconds ago
В логах контейнера ошибок нет, nginx внутри успевает подняться.
Почему контейнер не остаётся запущенным?
- Контейнер остановлен политикой перезапуска по умолчанию: без флага `--restart=always` Docker гасит контейнер сразу после того, как сервис внутри него стартовал
- Контейнеру не выделили терминал: без флагов `-i` и `-t` процесс внутри не получает stdin и завершается сразу после запуска, поэтому статус Exited (0)
- Порт не опубликован флагом `-p`, соединений извне нет, и Docker останавливает контейнер как простаивающий, о чём и сообщает нулевым кодом выхода
- Контейнер живёт ровно столько, сколько работает его главный процесс: `service nginx start` уводит демон в фон и завершается сама, PID 1 выходит с кодом 0
