如何将Docker容器连接到本地计算机上的Tor代理?

问题描述

我想通过本地机器上的tor代理从docker容器内部ping一个网站。如果不设置代理,则无法ping通。当我使用以下容器运行容器时:
sudo docker run --rm -it -p9150:9150 my-container
我收到以下错误:
Error starting userland proxy: listen tcp 0.0.0.0:9150: bind: address already in use.
我在localhost:9150上启动了tor-browser,但在运行容器时无法执行端口转发。我也不想在命令中使用--net=host。我添加了以下行
Environment="ALL_PROXY=socks5://127.0.0.1:9150"/lib/systemd/system/docker.service ,但未发声。有人可以帮我吗? (操作系统:Ubuntu 20.04)

解决方法

经过长时间的研究,我完成了以下步骤:

  1. sudo docker pull dperson / torproxy
  2. sudo docker网络创建器
  3. sudo docker run --rm -it --name mytor --network tor -p9050:9050 dperson / torproxy
  4. sudo docker run --rm -it --network tor myapp

在myapp内部,我有一个python脚本,该脚本通过tor袜子代理将消息发送到我的电报频道。我有一个网络(tor),并且两个容器都可以通过它互相看到。在python脚本中,我有以下内容:
bot = telegram.Bot(token=token,request=Request(con_pool_size=10,connect_timeout=40,proxy_url='socks5h://mytor:9050'))

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...