即使-d

时间:2019-06-19 15:30:57

标签: docker

我是法国人,现在是新来的人(所以我不知道堆栈溢出是如何工作的,他的社区)我将尝试适应自己。

所以,我的第一个问题是: 我用我用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正在运行或类似的东西。但是在集装箱停下来之后。

1 个答案:

答案 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"]