Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4516146
  • 博文数量: 252
  • 博客积分: 5347
  • 博客等级: 大校
  • 技术积分: 13838
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-30 10:13
文章分类
文章存档

2022年(12)

2017年(11)

2016年(7)

2015年(14)

2014年(20)

2012年(9)

2011年(20)

2010年(153)

2009年(6)

分类: 云计算

2015-10-13 21:41:08

  使用下面的命令启动一个交互的container后,使用netstat –r可以看到其中的路由信息。

 [root@centos~]# docker run -i -t centos6.3-base-v2 /bin/bash

下面的命令显示了在该Container中的路由信息。

[root@8e6146d088ce /]# netstat -r

Kernel IP routing table

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface

default         172.17.42.1     0.0.0.0         UG        0 0          0 eth0

172.17.0.0      *               255.255.0.0     U         0 0          0 eth0

         其中172.17.42.1为宿主机上网桥docker0接口的IP地址。

[root@10-10-63-106 ~]# ifconfig

docker0: flags=4163  mtu 1500

        inet 172.17.42.1  netmask 255.255.0.0  broadcast 0.0.0.0

        inet6 fe80::5484:7aff:fefe:9799  prefixlen 64  scopeid 0x20

        ether 56:84:7a:fe:97:99  txqueuelen 0  (Ethernet)

        RX packets 22  bytes 1324 (1.2 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 9  bytes 664 (664.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

  每启动一个Container都会在宿主机上生成一个veth类型的网卡接口,vethXXX接口就是宿主机和Container进行通信的接口,Veth接口会加入到docker0的虚拟网桥中。Veth类型的网卡接口是成对出现的,在宿主机上有一个veth接口在container内有一个和其对应的veth接口,当Container通过内部的Veth接口发送数据时,在宿主机上的veth接口就可以接受到,同样当宿主机上的数据发送到Veth接口,在ContainerVeth接口也可以接收到。向其一端输入数据,VETH会改变数据的方向并将其送入内核网络核心,完成数据的接收。在另一端能读到此数据。

在一台宿主机上分别启动了两个Container,可以看到它们的IP地址。

Container 1

bash-4.1# ifconfig

eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:04 

          inet addr:172.17.0.4  Bcast:0.0.0.0  Mask:255.255.0.0

          inet6 addr: fe80::42:acff:fe11:4/64 Scope:Link

          UP BROADCAST RUNNING  MTU:1500  Metric:1

          RX packets:11 errors:0 dropped:0 overruns:0 frame:0

          TX packets:11 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:851 (851.0 b)  TX bytes:816 (816.0 b)

Container 2

[root@8e6146d088ce /]# ifconfig

eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:03 

          inet addr:172.17.0.3  Bcast:0.0.0.0  Mask:255.255.0.0

          inet6 addr: fe80::42:acff:fe11:3/64 Scope:Link

          UP BROADCAST RUNNING  MTU:1500  Metric:1

          RX packets:20 errors:0 dropped:0 overruns:0 frame:0

          TX packets:11 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:1541 (1.5 KiB)  TX bytes:816 (816.0 b)

 我们直接在Container2ping  Container1上的IP地址是可以直接ping通。

  使用这种bridge模式,本身不需要任何的配置,在同一个宿主机上的启动的容器可以直接进行通信。在宿主机上使用brctl show命令就可以看出桥docker0下的接口信息

[root@10-10-63-106 ~]# brctl show

bridge name    bridge id            STP enabled     interfaces

docker0      8000.56847afe9799         no             veth7cfb930

                                                                                        veth99674fb


阅读(7027) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~