ITPub博客

首页 > 数据库 > 数据库开发技术 > Docker容器单机网络架构全攻略:使用自定义桥接的实践与探索

Docker容器单机网络架构全攻略:使用自定义桥接的实践与探索

原创 数据库开发技术 作者:shuchaoyang 时间:2024-06-30 07:00:00 0 删除 编辑

Docker容器单机网络架构全攻略:使用自定义桥接的实践与探索五 使用自定义docker桥接网络5.1 重新创建新的容器5.2 重新创建新的容器,并且指定网络 5.3 docker网桥切换

Docker容器单机网络架构全攻略:使用自定义桥接的实践与探索

五 使用自定义docker桥接网络

5.1 重新创建新的容器

[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 ~]$

5.2 重新创建新的容器,并且指定网络

[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之间,默认网络隔离。

5.3 docker网桥切换

[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私房菜;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论
专注于IT系统集成、运维、架构二十年的IT职场老兵,拥有CCNA、OCA、OCP、PGCA、PGCE认证证书,公众号:超哥的IT私房菜,知识星球:超哥的IT私房菜,目前是多家IT厂商的咨询顾问。

注册时间:2021-08-27

  • 博文量
    552
  • 访问量
    303486