背景说明
Docker Compose中的 default network 是根据环境来决定的,在当前的单节点环境中默认为 bridge 模式,在swarm中为 overlay。
默认情况下,Docker Compose中的多个服务会加入一个名为default的网络。这些服务在default网络中是互通的。该default网络的全称是项目名称_default
解决方案
查看网桥
[root@vm1 ~]# docker network ls
默认网桥
默认网络的网络名称为default可以通过指定default来指定
version: '2'
services:
front:
image: nginx
networks:
default:
external:
name: "mynet" # 已经存在的network
这里的name也可指定网络的资源ID docker network ls|grep mynet,例如:657ffea86794
定义网桥
version: '2'
services:
front:
image: nginx
networks:
- existnetwork
networks:
net1: #网络名称
ipam: #ip地址管理
driver: default
config:
- subnet: 172.20.0.0/16 # 网段管理
gateway: 172.20.0.1 # 网关地址
net2: #网络名称
ipam: #ip地址管理
driver: bridge
config:
- subnet: 172.20.0.0/16 # 网段管理
gateway: 172.20.0.1 # 网关地址
net3:
driver: default
driver可选值:bridge、default、overlay[节点必须在swarm中]
外部网桥
创建外部网络
[root@vm1 ~]# docker network create mynet
657ffea86794376427cdcacfdd243783e5e8ac803dafea4c812357619b22b9ca
[root@vm1 ~]# docker network inspect mynet
[
{
"Name": "mynet",
"Id": "657ffea86794376427cdcacfdd243783e5e8ac803dafea4c812357619b22b9ca",
"Created": "2022-04-12T15:28:18.802924635+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.23.0.0/16",
"Gateway": "172.23.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]
[root@vm1 ~]#
可以看到网段IP: {“Subnet”: “172.23.0.0/16”,”Gateway”: “172.23.0.1”}
引用外部已经存在的网络,语法格式如下
version: '2'
services:
front:
image: nginx
networks:
- existnetwork
networks:
existnetwork:
external:
name: "xxx-network"
version: '2'
services:
front:
image: nginx
networks:
externalnetwork: # 网络名称
external:
name: "mynet" # 已经存在的network
mynet必须事先存在
创建外部网络也可以指定网段、网关、网络名称、网卡名称
[root@vm1 ~]# docker network create --subnet=10.16.1.0/16 --gateway=10.16.1.1 --opt "com.docker.network.bridge.name"="bridgexxx" bridgexxx
e8188b58e28e511dae5195720afeb135f874119bc35c613080556e2fe5ea3636
[root@vm1 ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
e8188b58e28e bridgexxx bridge local
[root@vm1 ~]# ip addr
309: bridgexxx: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:ef:2d:6a:5b brd ff:ff:ff:ff:ff:ff
inet 10.16.1.1/16 brd 10.16.255.255 scope global bridgexxx
valid_lft forever preferred_lft forever