问题:在docker内部启动tor

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启动容器后,容器内没有运行 Tor 进程。我通过ps aux检查

我必须进入容器并手动运行命令service tor start

我在这里做错了什么?

谢谢

解答

正如 Dan Lowe 所说:

RUN service tor start 会启动tor,写入一个新的镜像层,然后退出。没有 CMD 或 ENTRYPOINT,因此该映像一旦构建,就根本不会启动任何进程。

将 docker 的东西分为两个阶段:构建(Dockerfile)和运行(docker run 或 docker-compose 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,使用 docker 你只需要前台进程。

Logo

云原生社区为您提供最前沿的新闻资讯和知识内容

更多推荐