在 docker 内启动 tor

Starting tor inside docker

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 进程 运行ning。我通过 ps aux

检查

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

我做错了什么?

谢谢

正如 Dan Lowe 所说:

RUN service tor start will start tor, write a new image layer, and exit. There's no CMD or ENTRYPOINT so this image, once built, won't start any processes at all.

分两个阶段思考 docker 内容:构建 (Dockerfile) 和 运行(docker 运行 或 docker-组合)。所以在 Dockerfile 中有一条指令告诉 docker 当容器 运行 (CMD) 时对 运行 的命令是什么,其他的 (运行, 等等) 是为了形象建设。

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,您只需要前台进程。