Docker容器单机网络架构全攻略:使用自定义桥接的实践与探索五 使用自定义docker桥接网络5.1 重新创建新的容器5.2 重新创建新的容器,并且指定网络 5.3 docker网桥切换
[superman@docker ~]$ docker run -dit --name superman001 alpine
示例:
[superman@docker ~]$ docker run -dit --name superman001 alpine
a7479884a350b2ba36211d91a087f631640b068a2771ca766b9afda880113791
[superman@docker ~]$
[superman@docker ~]$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a7479884a350 alpine "/bin/sh" About a minute ago Up About a minute superman001
[superman@docker ~]$
[superman@docker ~]$ docker inspect superman001 | grep -i ipaddress
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",
[superman@docker ~]$
[superman@docker ~]$ docker network ls
NETWORK ID NAME DRIVER SCOPE
1aa209e7f1ec br1 bridge local
e3124ecf5bf5 bridge bridge local
1fe81a14e4c7 host host local
008ae2f75ac2 none null local
[superman@docker ~]$
[superman@docker ~]$ docker network inspect e3124ecf5bf5
[
{
"Name": "bridge",
"Id": "e3124ecf5bf509eed6bae70009b6eee88edf8a3708e5ad0a680dee8804ea8817",
"Created": "2024-06-27T19:45:15.436074478+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"a7479884a350b2ba36211d91a087f631640b068a2771ca766b9afda880113791": {
"Name": "superman001",
"EndpointID": "e22b8b08c943b3524d8b5efae3603ebcb09f8d450ced89c038039cf2e5202ca4",
"MacAddress": "02:42:ac:11:00:02",
"IPv4Address": "172.17.0.2/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": {}
}
]
[superman@docker ~]$
[superman@docker ~]$ docker run -dit --name superman002 --network br1 alpine
示例:
[superman@docker ~]$ docker run -dit --name superman002 --network br1 alpine
20280f606803e2cd997e6723fd4b1db1fa86074b9d919995890c97154252d0ab
[superman@docker ~]$
[superman@docker ~]$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
20280f606803 alpine "/bin/sh" 5 seconds ago Up 4 seconds superman002
a7479884a350 alpine "/bin/sh" 7 minutes ago Up 7 minutes superman001
[superman@docker ~]$
[superman@docker ~]$ docker inspect superman002 | grep -i ipaddress
"SecondaryIPAddresses": null,
"IPAddress": "",
"IPAddress": "172.16.1.2",
[superman@docker ~]$
[superman@docker ~]$ docker network ls
NETWORK ID NAME DRIVER SCOPE
1aa209e7f1ec br1 bridge local
e3124ecf5bf5 bridge bridge local
1fe81a14e4c7 host host local
008ae2f75ac2 none null local
[superman@docker ~]$
[superman@docker ~]$ docker network inspect 1aa209e7f1ec
[
{
"Name": "br1",
"Id": "1aa209e7f1ecfb2a31aff43199ac845b90030480b854dba1a3aa2a32cfda74a1",
"Created": "2024-06-24T11:22:13.046754701+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.16.1.0/24",
"Gateway": "172.16.1.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"20280f606803e2cd997e6723fd4b1db1fa86074b9d919995890c97154252d0ab": {
"Name": "superman002",
"EndpointID": "43ff4cf56a63c5f73045e195702dc9eeeef5de31501559700951146e3060332e",
"MacAddress": "02:42:ac:10:01:02",
"IPv4Address": "172.16.1.2/24",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
[superman@docker ~]$
在不同的linux-bridge | docker network之间,默认网络隔离。
[root@centos7 docker]# docker network disconnect bridge superman001
[root@centos7 docker]# docker network connect br1 superman001
示例:
[superman@docker ~]$ docker network disconnect bridge superman001
[superman@docker ~]$
[superman@docker ~]$ docker network connect br1 superman001
[superman@docker ~]$
[superman@docker ~]$ docker inspect superman001 | grep -i ipaddress
"SecondaryIPAddresses": null,
"IPAddress": "",
"IPAddress": "172.16.1.3",
[superman@docker ~]$
[superman@docker ~]$ docker network ls
NETWORK ID NAME DRIVER SCOPE
1aa209e7f1ec br1 bridge local
e3124ecf5bf5 bridge bridge local
1fe81a14e4c7 host host local
008ae2f75ac2 none null local
[superman@docker ~]$
[superman@docker ~]$ docker network inspect 1aa209e7f1ec
[
{
"Name": "br1",
"Id": "1aa209e7f1ecfb2a31aff43199ac845b90030480b854dba1a3aa2a32cfda74a1",
"Created": "2024-06-24T11:22:13.046754701+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.16.1.0/24",
"Gateway": "172.16.1.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"20280f606803e2cd997e6723fd4b1db1fa86074b9d919995890c97154252d0ab": {
"Name": "superman002",
"EndpointID": "43ff4cf56a63c5f73045e195702dc9eeeef5de31501559700951146e3060332e",
"MacAddress": "02:42:ac:10:01:02",
"IPv4Address": "172.16.1.2/24",
"IPv6Address": ""
},
"a7479884a350b2ba36211d91a087f631640b068a2771ca766b9afda880113791": {
"Name": "superman001",
"EndpointID": "b2eb9591ef0ffa3a5e242f0a3f539c980e2b441e55654381bd8317dd8fca05e1",
"MacAddress": "02:42:ac:10:01:03",
"IPv4Address": "172.16.1.3/24",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
[superman@docker ~]$
基于主机名的访问(单独创建新的network可以⽀持docker容器主机名和IP地址解析)。
PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我吧!
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!

原文作者:超哥的IT私房菜;如有侵权,请联系管理员删除。