Docker 配置静态ip 后,启动提示 user specified IP address is supported only when connecting to networks with ..
Error response from daemon: user specified IP address is supported only when connecting to networks with user configured subnets
历史:
(1)docker network create app_net
重新 创建app_net 后问题解决
(2)docker network create --subnet=172.19.0.0/16 --gateway=172.19.0.1 app_net
问题原因分析
为什么之前报错?
-
原有的
app_net网络可能是在早期 Docker 版本中创建的,或者创建时没有明确指定子网配置 -
Docker 对静态 IP 的支持需要网络有明确配置的子网
-
重新创建时明确指定了
--subnet参数,确保了网络的完整配置
网络概念详解
1. 什么是子网(Subnet)?
子网是 IP 网络的一个逻辑细分。想象一下:
-
整个互联网就像一个大城市
-
子网就像城市中的各个区(比如海淀区、朝阳区)
-
IP 地址就像每个区的具体门牌号
--subnet=172.19.0.0/16 解释:
-
172.19.0.0:网络地址(就像区的名称) -
/16:子网掩码,表示前16位是网络号 window 设置 ip时候,不就是255.255.0.0 -
可用 IP 范围:
172.19.0.1-172.19.255.254 -
总共约 65,534 个可用 IP 地址
2. 网关(Gateway)
--gateway=172.19.0.1:
-
网关是子网的"出入口"
-
就像小区的门卫,负责内外通信
-
通常使用子网中的第一个可用 IP(
.1)
3. app_net 的作用
为什么需要自定义网络?
| 特性 | 默认 bridge 网络 | 自定义 app_net |
|---|---|---|
| 服务发现 | ❌ 不支持 | ✅ 支持容器名解析 |
| 静态 IP | ❌ 有限支持 | ✅ 完整支持 |
| 网络隔离 | ❌ 所有容器混杂 | ✅ 业务隔离 |
| DNS 解析 | ❌ 无 | ✅ 自动 DNS |
4. 各参数详细解释
bash
docker network create --subnet=172.19.0.0/16 --gateway=172.19.0.1 app_net
-
docker network create:创建新网络 -
--subnet=172.19.0.0/16:-
172.19.0.0:网络地址 -
/16:子网掩码(255.255.0.0) -
可用 IP:172.19.0.1 - 172.19.255.254
-
-
--gateway=172.19.0.1:网关地址,通常是.1 -
app_net:网络名称
实际应用场景
你的微服务架构:
text
app_net 网络 (172.19.0.0/16) ├── 172.19.0.2 - xxxxx (地图服务) ├── 172.19.0.3 - xxxxxxx (管理后台) ├── 172.19.0.4 - nginx_db (Web服务器) ├── 172.19.0.5 - redis (缓存) ├── 172.19.0.6 - rabbitmq (消息队列) ├── 172.19.0.7 - xxx ├── 172.19.0.8 - xxxx ├── 172.19.0.9 - xxx └── 172.19.0.50 - xxxx (你的新服务)
网络通信优势:
-
服务发现:容器间可以直接用容器名通信
bash
# 在 syrwff_server_v1 容器中可以直接访问 ping redis ping rabbitmq
-
静态 IP 保证:每次重启容器 IP 不变
-
网络隔离:与其他 Docker 网络隔离,更安全
CIDR 表示法详解
/16 的含义:
-
IP 地址:32位二进制数
-
/16:前16位是网络号,后16位是主机号 -
172.19.0.0/16=172.19.×××.×××
常见子网划分:
-
/24:255.255.255.0,254个主机(192.168.1.0/24) -
/16:255.255.0.0,65,534个主机(172.19.0.0/16) -
/8:255.0.0.0,约1677万个主机(10.0.0.0/8)
为什么选择 172.19.0.0/16?
-
私有地址段:172.16.0.0 - 172.31.255.255 是专用于内网的
-
足够大的空间:65,534个IP,适合微服务架构
-
避免冲突:不与公网IP冲突
更多推荐


所有评论(0)