命令是干什么的
docker network connect 把运行中的容器接入另一个网络,disconnect 则把它从某个网络断开。容器可以同时接入多个网络,在每个网络里拥有独立的 IP 与别名,适合临时接入调试网络,或让一个容器同时被多个网络内的服务访问。不同网络之间默认是隔离的,跨网络通信仍需路由或网关支持。
基本信息
| 用途 | 动态增减容器的网络接入 |
|---|---|
| 语法 | docker network connect [--alias 别名] [--ip IP] 网络 容器 |
| 断开 | docker network disconnect 网络 容器 |
| 适用网络 | 自定义网络(bridge / overlay) |
| 静态 IP 前提 | 网络创建时已声明 subnet |
典型使用场景
- 给正在运行的容器临时接入调试网络便于排查
- 一个容器同时位于前端与后端两个网络
- 迁移期间让容器同时可达新旧网络
- 排障时把容器接入抓包或代理网络
- 临时断开某网络,验证故障是否与该网络相关
接入与断开
接入与断开
docker network connect app-net web1 # 接入另一个网络
docker network connect --alias api --ip 172.20.0.10 app-net web1 # 指定别名与静态 IP
docker inspect web1 --format '{{json .NetworkSettings.Networks}}' # 查看已接入的网络
docker network disconnect app-net web1 # 从该网络断开
docker exec web1 ip addr show # 容器内确认接口变化参数含义
| 参数 | 含义 | 前提与注意 |
|---|---|---|
| 网络 容器 | 把容器接入指定网络 | 网络与容器都必须存在 |
| --alias | 在网络内的额外名称 | 同网络其他容器可按别名解析 |
| --ip | 指定静态 IP | 仅对创建时带 subnet 的自定义网络有效 |
| disconnect | 断开该网络接入 | 断开唯一网络会失去全部连通性 |
断开容器当前唯一的网络后,容器会完全失去网络连通性:进程还在跑,但所有调用都会超时,操作前先确认替代网络已接入。
默认 bridge 网络不支持在接入时指定静态 IP,需要先创建带子网声明的自定义网络。
接入新网络不会改变容器在原网络中的地址与别名,原有调用关系保持不变。