我是法国人,现在是新来的人(所以我不知道堆栈溢出是如何工作的,他的社区)我将尝试适应自己。
所以,我的第一个问题是: 我用我用Dockerfile创建的映像运行Docker容器。 (有DNS容器) 在Dockerfile中,此容器必须在启动时启动script.sh。 但是使用后:
docker run -d -ti -p 53:53 alex/dns
(使用-p 53:53,因为DNS。)
我可以在script.sh的末尾看到我的DNS正在运行,但是,当我这样做时: Docker ps -a;但是>容器未运行。
我是docker的新手。我两天前开始学习它。
我尝试添加(当然是一个接一个):
CMD ["bash"]
CMD ["/bin/bash"]
运行bash并确保不关闭电源。
我试图在Docker运行命令中添加-d
我尝试使用:
docker提交ti alex / dns
和
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 run之后,在我的脚本完成之后,容器start en stop juste。是的,DNS服务器正在运行该容器,然后在关闭之前告诉我[确定] Bind9正在运行或类似的东西。但是在集装箱停下来之后。
答案 0 :(得分:0)
我怀疑您面临的问题是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"]
用Google搜索它;-)
https://manpages.debian.org/jessie/bind9/named.8.en.html
配置完成后,可以将其作为前台进程运行
ENTRYPOINT ["named","-g"]