2017-07-15 46 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

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