
Docker容器改IP这事儿,真没你想得那么玄乎
搞过Docker的老铁都懂,默认分配的IP就像开盲盒,指不定给你整个172.17.0.X这种网段。要是多个容器要组局域网,或者需要固定IP对接代理服务,这随机分配可就坑人了。今儿咱们就手把手整明白怎么给Docker容器自定义IP地址,顺带教你怎么把ipipgo的代理IP玩出花。
先搞懂Docker的”虚拟网卡”机制
Docker默认会创建个叫bridge的虚拟网络,就像给容器们单独划了片小区。想改门牌号(IP),得先自己建个新小区:
新建个叫my-net的片区,网关设成192.168.99.1
docker network create --subnet=192.168.99.0/24 --gateway=192.168.99.1 my-net
注意这个网段别跟宿主机的冲突,建议用冷门段比如192.168.99.X或者10.10.10.X。建好后用docker network ls就能看见刚整的my-net了。
给容器分配固定IP的正确姿势
启动容器时加个–ip参数就完事了,但有两个坑要注意:
1. 必须指定自定义网络
错误示范(用默认网络会报错)
docker run -it --ip 192.168.99.10 ubuntu
正确姿势
docker run -it --network=my-net --ip 192.168.99.10 ubuntu
2. IP要在网段范围内
比如你建的是192.168.99.0/24网段,可用IP就是192.168.99.1~192.168.99.254。建议做个IP分配表:
| 容器名称 | 用途 | IP地址 |
|---|---|---|
| web01 | 前端服务 | 192.168.99.10 |
| proxy01 | 代理中转 | 192.168.99.20 |
| db01 | 数据库 | 192.168.99.30 |
容器里配置代理IP的骚操作
这时候就该搬出咱们的ipipgo了,拿静态住宅代理举个栗子:
在容器里设置全局代理
export http_proxy="http://用户名:密码@gateway.ipipgo.net:端口"
export https_proxy="http://用户名:密码@gateway.ipipgo.net:端口"
测试下IP是否生效
curl ipinfo.io
要是看到返回的IP变成ipipgo的节点,那就稳了。建议用他们家静态住宅套餐,35块一个月固定IP,比动态的靠谱多了。
常见问题QA
Q:改完IP容器之间ping不通咋整?
A:先查防火墙规则,再确认所有容器都在同一个自定义网络。可以用docker network inspect my-net看连接状态。
Q:代理IP突然连不上了怎么办?
A:先用docker exec进容器测试网络连通性。如果是ipipgo的节点问题,他们客服响应贼快,后台还能自助切换出口节点。
Q:要批量管理多个容器的代理咋弄?
A:推荐用ipipgo的API动态获取代理,写个shell脚本定时更新。他们家的API文档小学生都能看懂,支持json和txt多种格式。
说点掏心窝的话
其实网络配置这事吧,就像搭积木,多试几次就摸清门道了。ipipgo有个贼好用的功能——客户端一键配置,不用记那些复杂的命令。特别是做爬虫或者数据采集的老哥,直接选他们的TK专线,比折腾Docker网络省心多了。记住啊,技术是为业务服务的,别本末倒置。

