如何在 Docker 中使用Proxyscrape 代理

指南, 如何, 七月-01-20245 分钟阅读

某些用例要求你在本机不支持代理的程序中代理流量。上一篇博客讨论了如何在 Windows 上实现这一功能,但在 Linux 甚至 Docker 容器上也有很多使用代理的案例,以增加灵活性。

在这篇博文中,我们将讨论如何使用xjasonlyu/tun2socksDocker 容器为 Docker 容器使用代理。
tun2socks是一款轻量级的便携式网络隧道工具,它允许你通过代理服务器路由流量。它由 Go 语言编写,可作为独立可执行文件或 Docker 容器使用。
在本指南中,我将重点介绍如何在 Docker 中使用它,这样你就可以将任何其他 Docker 容器连接到它,并让它使用代理服务器。

首先,我们需要创建一个初始 Docker 容器来进行代理。

docker run -d --name tun2socks \
-e EXTRA_COMMANDS='echo "nameserver 1.1.1.1" > /etc/resolv.conf;ip rule add iif lo ipproto udp dport 53 lookup main;' \
-e PROXY=http://<user>:<pass>@rp.proxyscrape.com:6060 \
-v '/dev/net/tun:/dev/net/tun' --cap-add=NET_ADMIN \
xjasonlyu/tun2socks
  • EXTRA_COMMANDS是 DNS 正常工作所必需的,因为 tun2socks 容器默认不处理 DNS,而只是自己进行代理。
  • PROXY 用于设置要使用的代理,可以是 http/https 和socks4/5。此处有详细列表:
  • -v '/dev/net/tun:/dev/net/tun'将主机的虚拟网络设备(/dev/net/tun)挂载到容器中,允许 tun2socks 控制网络流量。
  • --cap-add=NET_ADMIN通过赋予容器访问网络协议栈的权限,使其具备建立代理隧道所需的网络管理能力。

在本例中,我使用的是Proxyscrape 住宅代理,但你也可以使用高级代理或任何其他代理。
既然我们已经创建了执行代理的容器,那么只需添加 --network=container:tun2socks 标志,就可以使用我们想要的任何容器来使用该容器的网络。

要测试一切工作是否正常,可以使用我创建的测试容器来返回 IPinfo 位置数据。

dockerrun--rm--network=container:tun2socks hibenji/checkip


当然,你可以在创建初始容器时使用旋转代理,也可以创建多个 tun2socks 容器,如果需要的话,所有容器都有粘性会话。

这种在 Docker 中使用代理的方法带来了无限可能。现在,您几乎可以将代理与任何 Docker 容器结合使用,即使是那些没有内置代理支持的容器。这可以增强容器化应用程序的功能,让您执行一些在没有这种网络控制水平的情况下可能很困难或不可能完成的任务。

感谢您的阅读,希望您能有所收获!

本文由ProxyScrape 用户 Benji 撰写。