ITPub博客

首页 > 数据库 > 数据库开发技术 > Docker容器单机网络架构全攻略:深入探索桥接方式的奥秘

Docker容器单机网络架构全攻略:深入探索桥接方式的奥秘

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

Docker容器单机网络架构全攻略:深入探索桥接方式的奥秘二 docker网络基础1-底层桥接方式2.1 查看宿主机上网络配置2.1.1 通过ifconfig查看2.1.2 通过ip add list查看2.1.3 通过ip add show查看2.2 查看宿主机上当前的网桥设备2.3 查看宿主机上网络桥接设备 docker0 上学习到的 MAC 地址2.4 查看宿主机上 dns 配置2.5 查看容器上 dns配置

Docker容器单机网络架构全攻略:深入探索桥接方式的奥秘

二 docker网络基础1-底层桥接方式

在docker host中安装docker引擎后,会自动创建docker0 linux bridge,默认情况下所有容器在创建时,都会关联到docker0(默认的linux bridge);并且在创建容器时docker会给每个容器分配IP地址,网关,域名服务器,如果宿主机可以访问Internet,那么容器也可以访问Internet。

2.1 查看宿主机上网络配置

2.1.1 通过ifconfig查看
[superman@docker ~]$ ifconfig -a

示例:

[superman@docker ~]$ ifconfig -a
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
      inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
      inet6 fe80::42:9cff:fe07:27df prefixlen 64 scopeid 0x20<link>
      ether 02:42:9c:07:27:df txqueuelen 0 (Ethernet)
      RX packets 0 bytes 0 (0.0 B)
      RX errors 0 dropped 0 overruns 0 frame 0
      TX packets 13 bytes 1776 (1.7 KiB)
      TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
      inet 192.168.0.121 netmask 255.255.255.0 broadcast 192.168.0.255
      inet6 fe80::bf89:d5fb:2136:8e25 prefixlen 64 scopeid 0x20<link>
      ether 00:0c:29:ae:f5:f2 txqueuelen 1000 (Ethernet)
      RX packets 6980 bytes 3535173 (3.3 MiB)
      RX errors 0 dropped 0 overruns 0 frame 0
      TX packets 1827 bytes 202306 (197.5 KiB)
      TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
      inet 127.0.0.1 netmask 255.0.0.0
      inet6 ::1 prefixlen 128 scopeid 0x10<host>
      loop txqueuelen 1000 (Local Loopback)
      RX packets 0 bytes 0 (0.0 B)
      RX errors 0 dropped 0 overruns 0 frame 0
      TX packets 0 bytes 0 (0.0 B)
      TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
      inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
      ether 52:54:00:2b:e7:4a txqueuelen 1000 (Ethernet)
      RX packets 0 bytes 0 (0.0 B)
      RX errors 0 dropped 0 overruns 0 frame 0
      TX packets 0 bytes 0 (0.0 B)
      TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

virbr0-nic: flags=4098<BROADCAST,MULTICAST> mtu 1500
      ether 52:54:00:2b:e7:4a txqueuelen 1000 (Ethernet)
      RX packets 0 bytes 0 (0.0 B)
      RX errors 0 dropped 0 overruns 0 frame 0
      TX packets 0 bytes 0 (0.0 B)
      TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[superman@docker ~]$
2.1.2 通过ip add list查看
[superman@docker ~]$ ip add list

示例:

[superman@docker ~]$ ip add list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever
  inet6 ::1/128 scope host
      valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
  link/ether 00:0c:29:ae:f5:f2 brd ff:ff:ff:ff:ff:ff
  inet 192.168.0.121/24 brd 192.168.0.255 scope global noprefixroute ens33
      valid_lft forever preferred_lft forever
  inet6 fe80::bf89:d5fb:2136:8e25/64 scope link noprefixroute
      valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
  link/ether 52:54:00:2b:e7:4a brd ff:ff:ff:ff:ff:ff
  inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
      valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
  link/ether 52:54:00:2b:e7:4a brd ff:ff:ff:ff:ff:ff
5: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
  link/ether 02:42:9c:07:27:df brd ff:ff:ff:ff:ff:ff
  inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
      valid_lft forever preferred_lft forever
  inet6 fe80::42:9cff:fe07:27df/64 scope link
      valid_lft forever preferred_lft forever
[superman@docker ~]$
2.1.3 通过ip add show查看
[superman@docker ~]$ ip add show

示例:

[superman@docker ~]$ ip add show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever
  inet6 ::1/128 scope host
      valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
  link/ether 00:0c:29:ae:f5:f2 brd ff:ff:ff:ff:ff:ff
  inet 192.168.0.121/24 brd 192.168.0.255 scope global noprefixroute ens33
      valid_lft forever preferred_lft forever
  inet6 fe80::bf89:d5fb:2136:8e25/64 scope link noprefixroute
      valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
  link/ether 52:54:00:2b:e7:4a brd ff:ff:ff:ff:ff:ff
  inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
      valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
  link/ether 52:54:00:2b:e7:4a brd ff:ff:ff:ff:ff:ff
5: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
  link/ether 02:42:9c:07:27:df brd ff:ff:ff:ff:ff:ff
  inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
      valid_lft forever preferred_lft forever
  inet6 fe80::42:9cff:fe07:27df/64 scope link
      valid_lft forever preferred_lft forever
[superman@docker ~]$

2.2 查看宿主机上当前的网桥设备

[superman@docker ~]$ brctl show

示例:

[superman@docker ~]$ brctl show
bridge name     bridge id               STP enabled     interfaces
docker0         8000.02429c0727df       no
virbr0          8000.5254002be74a       yes             virbr0-nic
[superman@docker ~]$

2.3 查看宿主机上网络桥接设备 docker0 上学习到的 MAC 地址

[superman@docker ~]$ brctl showmacs docker0

示例:

[superman@docker ~]$ brctl showmacs docker0
port no mac addr               is local?       ageing timer
 1     7e:e7:1a:c2:e5:11       yes                0.00
 1     7e:e7:1a:c2:e5:11       yes                0.00
[superman@docker ~]$

2.4 查看宿主机上 dns 配置

[superman@docker ~]$ cat /etc/resolv.conf

示例:

[superman@docker ~]$ cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 202.102.224.68
[superman@docker ~]$
[superman@docker ~]$

2.5 查看容器上 dns配置

[superman@docker ~]$ docker attach superman01
/ #
/ # cat /etc/resolv.conf

示例:

[superman@docker ~]$ docker attach superman01
/ #
/ # cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 202.102.224.68
/ #
/ # exit
[superman@docker ~]$


PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我吧!


👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!


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

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

注册时间:2021-08-27

  • 博文量
    552
  • 访问量
    303486