簡體   English   中英

啟動容器時啟動Tor和Polipo

[英]Start tor and polipo when I launch my container

我編寫了我的第一個Dockerfile,以便使用tor和polipo測試Docker。 我的Dockerfile看起來像:

# Pull base image.
FROM ubuntu:latest

# Upgrade system
RUN apt-get update && apt-get dist-upgrade -y --no-install-recommends && apt-get autoremove -y && apt-get clean

# Install TOR
RUN apt-get install -y --no-install-recommends tor tor-geoipdb torsocks && apt-get autoremove -y && apt-get clean

# INSTALL POLIPO
RUN apt-get update && apt-get install -y polipo


# Default ORPort
EXPOSE 9001

# Default DirPort 
EXPOSE 9030

# Default SOCKS5 proxy port 
EXPOSE 9050

# Default ControlPort
EXPOSE 9051
# Default polipo Port
EXPOSE 8123

RUN echo 'socksParentProxy = "localhost:9050"'  >> /etc/polipo/config
RUN echo 'socksProxyType = socks5'  >> /etc/polipo/config
RUN echo 'diskCacheRoot = ""' >> /etc/polipo/config

RUN echo 'ORPort 9001' >> /etc/tor/torrc
RUN echo 'ExitPolicy reject *:*' >> /etc/tor/torrc

RUN mkdir scrapy
ADD scrapyTor scrapy

ADD startpolipotor.sh .
RUN chmod 775 ./startpolipotor.sh

我的startpolipotor.sh包含3行:

#!/bin/bash                                                              
/etc/init.d/tor start &
/etct/init.d/polipo start &

但是,當我啟動此命令時:

docker run -i -t id_image /bin/bash

當我啟動ps進入容器后,什么也看不到。 我該如何解決?

您的Dockerfile應該具有如下定義的命令:

CMD ./startpolipotor.sh

然后,您無需提供/bin/bash作為run命令。 僅以下內容就足夠了:

docker run -i -t id_image

順便說一句 :您的腳本文件創建了兩個在后台運行的進程。 那不管用!

Docker容器需要始終有一個前台進程。 在您的情況下,容器將在執行啟動腳本后立即停止。 並且在停止SIGTERM時不會正確地將其發送給那些后台進程,因此它們將被殺死並可能留下一些損壞的數據。

當您需要在容器中啟動多個進程時,應該考慮使用supervisord

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM