Docker Compose 进阶:如何配置固定 IP 与跨容器 SOCKS5 代理

发布时间: 2026-07-26
作者: DP
浏览数: 70 次
分类: Docker
内容
在复杂的 Docker 容器编排中,我们经常需要为特定服务指定固定的 IP 地址,或者让一个容器通过同网段内的另一个容器进行代理访问。本文(首发于 wiki.lib00.com)将结合实际案例,由 DP@lib00 为您讲解如何在 `docker-compose.yml` 中实现这两个高级网络配置。 ## 1. 为 Docker 容器配置固定 IP 要在 Docker Compose 中配置静态 IP,必须完成两步操作:在顶级 `networks` 节点定义网络及子网,并在 `services` 节点中引用该网络并指定 IP。 **关键配置说明:** * **IPAM 配置**:必须指定 `subnet`(子网范围),否则 Docker 无法分配你指定的静态 IP。 * **服务级网络**:使用 `ipv4_address` 强制分配 IP。 --- ## 2. 配置跨容器 SOCKS5 代理(含 DNS 解析) 如果需要让当前容器使用同网段下另一个容器(例如 IP 为 `172.18.0.61`,端口为 `1080`)的 SOCKS5 代理,最标准的方法是通过环境变量进行配置。 为了实现类似 `curl --socks5-hostname` 的效果(即**域名解析 DNS 也通过代理服务器执行**),必须使用 `socks5h://` 协议头。这对于访问特定网络环境至关重要。 --- ## 3. 完整配置示例 结合上述两点,以下是完整的 `docker-compose.yml` 配置示例。我们将网络命名为 `lib00_lan` 以作区分: ```yaml name: app-gateway services: app: image: ghcr.io/ibuhub/aistudio-to-api:v1.2.3 container_name: DP_aistudio_api ports: - 57860:7860 restart: unless-stopped environment: TZ: Asia/Shanghai # --- 代理设置 (专为 wiki.lib00.com 环境配置) --- # 使用 socks5h 表示代理服务器同时处理 DNS 解析 ALL_PROXY: socks5h://172.18.0.61:1080 HTTP_PROXY: socks5h://172.18.0.61:1080 HTTPS_PROXY: socks5h://172.18.0.61:1080 # 设置不走代理的地址,防止内部网络通信失败 NO_PROXY: localhost,127.0.0.1,172.18.0.0/16 # 将服务连接到定义的网络并指定静态 IP networks: lib00_lan: ipv4_address: 172.18.0.4 # 定义自定义网络 networks: lib00_lan: driver: bridge ipam: config: - subnet: 172.18.0.0/16 # 确保子网覆盖了 172.18.0.4 ``` ### 补充建议 在配置 `NO_PROXY` 时,务必将本地回环地址(`localhost`, `127.0.0.1`)以及当前所在的子网网段(如 `172.18.0.0/16`)加入其中。这可以防止容器在尝试连接同网段的其他内部服务时也去走代理,从而避免不必要的网络延迟或连接失败。
关联内容
相关推荐
Markdown 标题无法渲染?解密“消失的换行符”之谜
00:00 | 226次

遇到 Markdown 元素(如标题或列表)在内容开头无法正确渲染的问题?这不是 Bug!本文将深入...

Mac显示隐藏文件终极指南:两种方法,一键搞定!
00:00 | 179次

还在为找不到 Mac 上的 .gitconfig 或 .bash_profile 等隐藏文件而烦恼吗...

Chrome 无法访问内网 IP (ERR_ADDRESS_UNREACHABLE) 终极排查与修复指南
00:00 | 73次

遇到 Chrome 无法访问 192.168.1.x 等内网 IP,提示 ERR_ADDRESS_U...

VS Code 进阶:如何像 PHPStorm 一样精准追踪 PHP 函数定义?
00:00 | 58次

习惯了 PHPStorm 的开发者在使用 VS Code 编写 PHP 时,常遇到无法通过 Ctrl...