2017-07-15 76 views
1
FROM python:2 

RUN echo "deb http://deb.torproject.org/torproject.org jessie main\ndeb-src http://deb.torproject.org/torproject.org jessie main" | tee -a /etc/apt/sources.list 
RUN gpg --keyserver keys.gnupg.net --recv A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 
RUN gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | apt-key add - 
RUN apt-get update -y 
RUN apt-get install -y tor deb.torproject.org-keyring 
RUN service tor start 

当我通过docker-compose启动我的容器后,在容器内部没有运行过程。我通过ps auxDocker内部的起始器

检查我得进去容器和手动运行命令service tor start

我到底做错了什么?

感谢

+1

@jww stackoverflow为您提供了linux,docker,tor和docker-compose的标签。它仍然与开发 –

+0

让我们看看...您正试图从您最喜欢的轻量级虚拟机Docker中启动最喜欢的浏览器Tor。我无法与编程和开发建立联系。我对缺乏洞察力表示歉意。也许我应该开始在这里问我的VMware和系统问题,因为程序员也使用它们。 – jww

+3

运行服务器启动将开始,写入一个新的图像层并退出。没有CMD或入口点,所以这个图像一旦建成,根本不会启动任何进程。你应该去Docker文档并了解入口点以及如何在容器中启动进程。 –

回答

2

正如丹罗威说:

RUN服务TOR开始将开始TOR,谱写新的图像层,并退出。没有CMD或入口点,所以这个图像一旦建成,根本不会启动任何进程。

认为docker的东西分两个阶段:build(Dockerfile)和run(docker run或docker-up组成)。所以在Dockerfile中有一条指令告诉docker当容器运行(CMD)时运行的命令是什么,其他的(RUN等)是为图像构建运行的。

FROM python:2 

RUN echo "deb http://deb.torproject.org/torproject.org jessie main\ndeb-src http://deb.torproject.org/torproject.org jessie main" | tee -a /etc/apt/sources.list 
RUN gpg --keyserver keys.gnupg.net --recv A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 
RUN gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | apt-key add - 
RUN apt-get update -y 
RUN apt-get install -y tor deb.torproject.org-keyring 
CMD tor 

不要使用service,与搬运工你只需要前台进程。

+0

是的,谢谢,它工作:) –