查看docker默认的桥接
[root@asimov ~]# docker network inspect bridge
[
{
"Name": "bridge",
"Id": "2a7643b421600e6a8edaedb8310d159e55c14641f0085fac16a7107bfd504dc3",
"Created": "2020-04-16T11:18:54.976359251+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.18.0.0/16", # bridge子网
"Gateway": "172.18.0.1" # bridge网关
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"24e4e4c517b0454d548b575280965cec63e83cae92b1f9cf4ca3a5b39210785f": {
"Name": "asimov_web", # web服务器
"EndpointID": "e9a9e73e18ef5bc1745e278b274197db154b36ff7d616b634918c05d90a5d972",
"MacAddress": "02:42:ac:12:00:03",
"IPv4Address": "172.18.0.3/16",
"IPv6Address": ""
},
"61c1a2f929134397c13e60676b9cced770f10b4bf0e9f0670ce567cfe8710897": {
"Name": "blog", # web服务器
"EndpointID": "957627a920fa0b539385c45fe500cb3df863696826b8cd589972d669ab819b9e",
"MacAddress": "02:42:ac:12:00:02",
"IPv4Address": "172.18.0.2/16",
"IPv6Address": ""
},
"7b962746a9407faefe40f0f3744c81a0d3b1e301adcc69f561e41a33785d4329": {
"Name": "mysqlblog", # 数据库
"EndpointID": "8cbf8477ac703ad600c41cd8fefe6fcb2dc9409deb8ea18653512aa83289f12f",
"MacAddress": "02:42:ac:12:00:04",
"IPv4Address": "172.18.0.4/16",
"IPv6Address": ""
}
},
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "1500"
},
"Labels": {}
}
]
自定义桥接:用户自定义bridge在容器之间提供了自动DNS解析
创建一个名为blog-net的桥接
docker network create blog-net
将web服务器和mysql添加到blog-net桥接中
[root@asimov ~]# docker network connect blog-net blog
[root@asimov ~]# docker network connect blog-net mysqlblog
查看 blog-net桥接
[root@asimov ~]# docker network inspect blog-net
[
{
"Name": "blog-net",
"Id": "cae98b4f4bea7981e1f178c74c4a6c692f92cf23e731d00a4b06311fb8a300e3",
"Created": "2020-04-17T16:15:30.168962176+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.19.0.0/16", # blog-net 子网
"Gateway": "172.19.0.1" # blog-net网关
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"61c1a2f929134397c13e60676b9cced770f10b4bf0e9f0670ce567cfe8710897": {
"Name": "blog", # blog web服务器
"EndpointID": "988682bf356d1546f1f4fffb5d5a24badbc6c05eb374fd9dce3a1a6973ce5394",
"MacAddress": "02:42:ac:13:00:02",
"IPv4Address": "172.19.0.2/16",
"IPv6Address": ""
},
"7b962746a9407faefe40f0f3744c81a0d3b1e301adcc69f561e41a33785d4329": {
"Name": "mysqlblog", # mysqlblog数据库
"EndpointID": "7ada87e8ee339d87e0e744aba95fe3f72d517899e10a7ffd7919aab0aa152d35",
"MacAddress": "02:42:ac:13:00:03",
"IPv4Address": "172.19.0.3/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
进入 blog容器
[root@asimov ~]# docker exec -it blog /bin/bash
通过容器名ping mysqlblog(和blog容器在同一自定义桥接中
)
[root@61c1a2f92913 ~]# ping mysqlblog
PING mysqlblog (172.19.0.3) 56(84) bytes of data.
64 bytes from mysqlblog.blog-net (172.19.0.3): icmp_seq=1 ttl=64 time=0.110 ms
64 bytes from mysqlblog.blog-net (172.19.0.3): icmp_seq=2 ttl=64 time=0.071 ms
64 bytes from mysqlblog.blog-net (172.19.0.3): icmp_seq=3 ttl=64
通过容器名ping asimov_web(在默认桥接中
)
默认桥接
:只能通过IP互连
[root@61c1a2f92913 ~]# ping asimov_web
ping: asimov_web: Name or service not known
将容器与默认桥接的连接断开
[root@asimov ~]# docker network disconnect bridge blog
[root@asimov ~]# docker network disconnect bridge mysqlblog
查看容器:此时只有web服务端口暴露在外部
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
54fc41b8a394 mariadb "docker-entrypoint.s…" 11 minutes ago Up 11 minutes 3306/tcp mysqlblog
61c1a2f92913 centos:7 "/bin/bash" 2 days ago Up 30 hours 0.0.0.0:3333->8080/tcp blog
24e4e4c517b0 centos:7 "/bin/bash" 4 weeks ago Up 30 hours 0.0.0.0:3000->80/tcp asimov_web
配web服务器django中mysql连接
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '',
'USER': '',
'PASSWORD': '',
'HOST': 'mysqlblog', # 容器名
'PORT': '3306'
}
}