Контейнер Docker выходит сразу после запуска [Контейнер сломан москитом] - PullRequest
0 голосов
/ 05 апреля 2019

привет, у меня проблема с docker, недавно я создаю dockerfile для создания образа "mosquitto-mqtt", чтобы создать свой собственный сломанный mqtt с защитой ssl. я создаю dockerfile, все хорошо, у меня нет проблем, но если я запускаю новый контейнер с "docker run -itd --name broken ce69ee4b2f4e", контейнер запускается и автоматически завершается, а если в журнале проверки все хорошо "[ ok.] Запуск сетевого демона :: mosquitto. " у меня нет почему? проверьте мой докер-файл. Мне нужна помощь, чтобы решить ее, спасибо

#Download base image debian
FROM debian:latest

#Update system
RUN apt-get update -y

#Install Wget and gnup2
RUN apt-get install wget -y && apt-get install gnupg2 -y

#Download and add key
RUN wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
RUN apt-key add mosquitto-repo.gpg.key
RUN rm mosquitto-repo.gpg.key

## append apt mirror for debian
RUN echo "# mirror" >> /etc/apt/source.list
RUN echo "deb http://repo.mosquitto.org/debian stretch main" >> /etc/apt/source.list

#Update and upgrade system
RUN apt-get update -y && apt-get upgrade -y

#install mosquitto
RUN apt-get install mosquitto -y

#Copy file configuration
COPY mosquitto.conf /etc/mosquitto

#Copy certificate folder
COPY certs/mosquitto-ca.crt /etc/mosquitto/certs
COPY certs/mosquitto-server.crt /etc/mosquitto/certs
COPY certs/mosquitto-server.key /etc/mosquitto/certs

#Run command
ENTRYPOINT ["/etc/init.d/mosquitto", "start"]

печать журнала

[ ok .] Starting network daemon:: mosquitto.

Докер PS -A

CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS                     PORTS               NAMES
d00bd23ae2d6        ce69ee4b2f4e              "/etc/init.d/mosquit…"   9 minutes ago       Exited (0) 9 minutes ago                       broken

Ответы [ 2 ]

1 голос
/ 05 апреля 2019

Контейнеры являются оболочкой для процесса, и когда этот процесс завершается, контейнер завершается.В этом случае:

ENTRYPOINT ["/etc/init.d/mosquitto", "start"]

Это процесс /etc/init.d/mosquitto, который почти наверняка запускается, порождает демона в фоновом режиме и завершается (стандартно для всего в init.d).Вместо этого вы должны запускать mosquito напрямую с параметрами переднего плана, если они доступны.

Если это возможно, то что-то вроде supervisord будет менее чем оптимальным откатом с возможностью наблюдать за фоновым демоном.

Иесли ни один из этих способов не работает, вы можете запустить свою команду из сценария, заканчивающегося tail -f /dev/null, но это будет наихудшим вариантом, поскольку вы игнорируете любые ошибки.

0 голосов
/ 05 апреля 2019

это работает! Я нашел решение, просто нужно добавить "-C" в команде и указать каталог

это хороший метод

ENTRYPOINT ["mosquitto", "-c", "/etc/mosquitto/mosquitto.conf"]

Спасибо всем, чтобы помочь Мне!

...