一个Docker容器中的多个Tor服务

德米特里

dockerfile在docker中有run tor:

FROM alpine:latest
RUN apk update && apk upgrade && \
    apk add tor curl && \
    rm /var/cache/apk/* && \
    cp /etc/tor/torrc.sample /etc/tor/torrc && \
    echo "SocksPort 0.0.0.0:9050" > /etc/tor/torrc
EXPOSE 9050
USER tor
CMD /usr/bin/tor -f /etc/tor/torrc

有用。我想在一个dockerfile中运行多个tor并打开不同的端口(9051、9052等)。我可以docker-compose.yml为每个端口创建一个泊坞窗,但我认为这不是一个好的解决方案。

可能有人知道如何运行多个Tor,并从docker发布它们的端口吗?

德米特里

对我来说,帮助这个dockerfile:

FROM alpine:latest
RUN apk update && apk upgrade && \
    apk add tor curl bash && \
    rm /var/cache/apk/* && \
    cp /etc/tor/torrc.sample /etc/tor/torrc

EXPOSE 9050-9060

ADD start.sh /usr/local/bin/start.sh
RUN chmod +x /usr/local/bin/start.sh

RUN echo | sed -i 's/\r$//' /usr/local/bin/start.sh

CMD /usr/local/bin/start.sh

和脚本start.sh:

#!/bin/bash
#making script to stop on 1st error
set -e

# Original script from
# http://blog.databigbang.com/distributed-scraping-with-multiple-tor-circuits/

# if defined TOR_INSTANCE env variable sets the number of tor instances (default 10)
TOR_INSTANCES=${TOR_INSTANCES:=10 }

# if defined TOR_OPTIONSE env variable can be used to add options to TOR
TOR_OPTIONS=${TOR_OPTIONS:=''}

base_socks_port=9050
base_control_port=11000
dir_data="/tmp/multitor.$$"

# Create data directory if it doesn't exist
if [ ! -d $dir_data ]; then
        mkdir $dir_data
fi


if [ ! $TOR_INSTANCES ] || [ $TOR_INSTANCES -lt 1 ]; then
    echo "Please supply an instance count"
    exit 1
fi

for i in $(seq $TOR_INSTANCES)
do
        j=$((i+1))

        socks_port=$((base_socks_port+i))
        control_port=$((base_control_port+i))

        if [ ! -d "$dir_data/tor$i" ]; then
                echo "Creating directory $dir_data/tor$i"
                mkdir "$dir_data/tor$i" && chmod -R 700 "$dir_data/tor$i"
        fi

        # Take into account that authentication for the control port is disabled. Must be used in secure and controlled environments
        echo "Running: tor --RunAsDaemon 1 --CookieAuthentication 0 --HashedControlPassword \"\" --ControlPort 0.0.0.0:$control_port --PidFile tor$i.pid --SocksPort 0.0.0.0:$socks_port --DataDirectory $dir_data/tor$i  -f /etc/tor/torrc"

        tor --RunAsDaemon 1 --CookieAuthentication 0 --HashedControlPassword "" --PidFile $dir_data/tor$i/tor$i.pid --SocksPort 0.0.0.0:$socks_port --DataDirectory $dir_data/tor$i
done

# So that the container doesn't shut down, sleep this thread
sleep infinity

建立并开始:

docker build -t torone ./

docker run -d -e "TOR_INSTANCES=10" -p 9050-9060:9050-9060 --rm --name torone torone

TOR_INSTANCES-包含要启动多少个Tor进程。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在一个容器或多个容器 Docker 上运行多个服务?

来自分类Dev

从另一个Docker容器内部在Docker容器中运行的访问服务

来自分类Dev

在COBOL的CICS Web服务调用中,通过一个管道处理多个容器

来自分类Dev

Docker:从一个容器中的应用程序和服务器登录

来自分类Dev

通过AWS ECS在一个EC2实例中的多个Docker容器

来自分类Dev

在一个Docker容器中运行多个应用程序

来自分类Dev

Docker 在一个容器中组合多个数据库

来自分类Dev

在另一个Docker容器中运行一个Docker容器?

来自分类Dev

在另一个Docker容器中运行一个Docker容器?

来自分类Dev

同一个Docker Compose服务在多个文件夹中

来自分类Dev

在一个服务主机中托管多个服务?

来自分类Dev

是否可以创建包含一个或多个容器的Docker容器?

来自分类Dev

Docker:一个网络中容器之间的请求

来自分类Dev

docker-compose具有一个文件的命名卷:错误:无法创建服务容器,源不在目录中

来自分类Dev

从另一个Docker容器中的另一个应用程序启动Docker容器

来自分类Dev

从另一个Docker容器中的另一个应用程序启动Docker容器

来自分类Dev

从另一个Docker容器中的pgAdmin4访问Docker容器上的PostgreSQL

来自分类Dev

一个Div内的多个Div的容器中的一个Div

来自分类Dev

一个Div内的多个Div的容器中的一个Div

来自分类Dev

从另一个容器中的硒访问的Docker容器中的Firefox

来自分类Dev

Docker,如何在PHP中的另一个容器中获取容器IP?

来自分类Dev

使用docker-compose将多个Docker容器链接到一个别名为localhost的容器

来自分类Dev

使用docker-compose将多个Docker容器链接到一个别名为localhost的容器

来自分类Dev

标记一个Docker容器?

来自分类Dev

标记一个Docker容器?

来自分类Dev

从另一个容器连接到在Docker容器中运行的无头nREPL

来自分类Dev

如何在构建另一个容器的过程中填充Mysql docker容器?

来自分类Dev

在另一个容器的构建过程中无法解析Docker容器

来自分类Dev

设置Nginx反向代理以从另一个Docker容器提供服务

Related 相关文章

  1. 1

    在一个容器或多个容器 Docker 上运行多个服务?

  2. 2

    从另一个Docker容器内部在Docker容器中运行的访问服务

  3. 3

    在COBOL的CICS Web服务调用中,通过一个管道处理多个容器

  4. 4

    Docker:从一个容器中的应用程序和服务器登录

  5. 5

    通过AWS ECS在一个EC2实例中的多个Docker容器

  6. 6

    在一个Docker容器中运行多个应用程序

  7. 7

    Docker 在一个容器中组合多个数据库

  8. 8

    在另一个Docker容器中运行一个Docker容器?

  9. 9

    在另一个Docker容器中运行一个Docker容器?

  10. 10

    同一个Docker Compose服务在多个文件夹中

  11. 11

    在一个服务主机中托管多个服务?

  12. 12

    是否可以创建包含一个或多个容器的Docker容器?

  13. 13

    Docker:一个网络中容器之间的请求

  14. 14

    docker-compose具有一个文件的命名卷:错误:无法创建服务容器,源不在目录中

  15. 15

    从另一个Docker容器中的另一个应用程序启动Docker容器

  16. 16

    从另一个Docker容器中的另一个应用程序启动Docker容器

  17. 17

    从另一个Docker容器中的pgAdmin4访问Docker容器上的PostgreSQL

  18. 18

    一个Div内的多个Div的容器中的一个Div

  19. 19

    一个Div内的多个Div的容器中的一个Div

  20. 20

    从另一个容器中的硒访问的Docker容器中的Firefox

  21. 21

    Docker,如何在PHP中的另一个容器中获取容器IP?

  22. 22

    使用docker-compose将多个Docker容器链接到一个别名为localhost的容器

  23. 23

    使用docker-compose将多个Docker容器链接到一个别名为localhost的容器

  24. 24

    标记一个Docker容器?

  25. 25

    标记一个Docker容器?

  26. 26

    从另一个容器连接到在Docker容器中运行的无头nREPL

  27. 27

    如何在构建另一个容器的过程中填充Mysql docker容器?

  28. 28

    在另一个容器的构建过程中无法解析Docker容器

  29. 29

    设置Nginx反向代理以从另一个Docker容器提供服务

热门标签

归档