Контейнер Docker не работает, даже если -d - PullRequest
0 голосов
/ 19 июня 2019

Я француз и новичок здесь (так что я не знаю, как работает переполнение стека, его сообщество) Я попытаюсь приспособиться.

Итак, моя первая проблема заключается в следующем: Я запускаю Docker-контейнер с моим изображением, которое он создал с помощью Dockerfile. (есть контейнер DNS) В Dockerfile этот контейнер должен запускать script.sh при его запуске. Но после использования это:

 docker run -d -ti -p 53:53 alex/dns

(используйте -p 53:53 потому что DNS.)

Я вижу, как работает мой DNS в конце файла script.sh, но когда я это делаю: Docker ps -a; но> контейнер не работает.

Я новичок в докере. Я начал изучать это 2 дня назад.

Я пытался добавить (один за другим, конечно):

 CMD ["bash"] 
 CMD ["/bin/bash"] 

чтобы запустить bash и убедиться, что он не выключается.

Я пытался добавить -d в команду запуска Docker

Я пытался использовать:
Докер коммит ти / днс а также docker exec -ti alex / dns / bin / bsh

Мой файл dockerfile:

FROM debian
...
RUN apt-get install bind9
...
ADD script.sh /usr/bin/script.sh
...
ENTRYPOINT ["/bin/bash", "script.sh]
CMD ["/bin/bash"]

Мой файл script.sh:

service bind9 stop

 *It copy en remplace conf file for bind9*

service bind9 restart

Надеюсь, что ошибок не слишком много и мне удалось понять себя

Я ожидаю, что DNS-контейнер продолжит работать, и могу использовать его с Docker Exec. Но теперь, после запуска docker, контейнер запускается и останавливается по окончании моего скрипта. Да, DNS-сервер запускает контейнер, скажите мне, прежде чем закрыть [ок] работает Bind9 или что-то в этом роде Но после остановки контейнера.

1 Ответ

0 голосов
/ 19 июня 2019

Я подозреваю, что проблема, с которой вы сталкиваетесь, заключается в том, что ваш контейнер завершит работу после завершения service bind9 restart.

Вам нужно запустить процесс переднего плана, чтобы контейнер работал.

Я незнаком с bind9, но я рекомендую вам изучить способы запуска bind9 на переднем плане в вашем контейнере.

Ваша команда для запуска контейнера верна: docker run -d -ti -p 53:53 alex/dns

Возможно, вам потребуется:

RUN apt-get update && apt-get -y install bind9

Скорее всего, вам понадобится что-то вроде (не знаю):

ENTRYPOINT ["/bind9"]

Погуглил; -)

https://manpages.debian.org/jessie/bind9/named.8.en.html

После того, как вы настроили его, вы можете запустить его как основной процесс:

ENTRYPOINT ["named","-g"]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...