gpt4 book ai didi

ubuntu - 启动容器时启动 tor 和 polipo

转载 作者:行者123 更新时间:2023-12-02 18:24:46 27 4
gpt4 key购买 nike

我编写了我的第一个 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 相反,当您需要在容器中启动多个进程时。

关于ubuntu - 启动容器时启动 tor 和 polipo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31702107/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com