docker容器之间网络是如何通信的?
2019-08-07 16:51
1576 查看
相关概念:
网桥:相当于一个虚拟的交换机,连接在此网桥上的所有设备均可以正常通信;
veth pair:虚拟网卡对(2张网卡),两张网卡之间的收发数据保持一致;
docker网络:
docker0网桥:在安装启动完docker之后,会出现一个docker0的网卡设备(此设备相当于一个交换机);
创建docker容器后,会创建2个虚拟网卡,一端显示在宿主机中,一端是容器中的eth0,这2张网卡是虚拟网卡对;
创建2个容器,在宿主机上执行ip a,可以看到会出现2个虚拟网卡(以veth开头):
docker run -d --name nginx-1 nginx docker run -d --name nginx-2 nginx [root@ks-allinone ~]# ip a ... 3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:92:a1:07:20 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:92ff:fea1:720/64 scope link valid_lft forever preferred_lft forever 37: veth87e12aa@if36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default link/ether 56:3f:71:00:b2:95 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet6 fe80::543f:71ff:fe00:b295/64 scope link valid_lft forever preferred_lft forever 39: vethed473fd@if38: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default link/ether 66:f0:c4:e4:df:a9 brd ff:ff:ff:ff:ff:ff link-netnsid 1 inet6 fe80::64f0:c4ff:fee4:dfa9/64 scope link valid_lft forever preferred_lft forever
brctl show:可以看到这2个虚拟网卡都绑定在docker0上(相当于通过宿主机上的虚拟网卡连接在交换机(docker0)上)
[root@ks-allinone ~]# brctl show bridge name bridge id STP enabled interfaces docker0 8000.024292a10720 no veth87e12aa vethed473fd
注:连接到同一个网桥上之后(相当于连接在同一个交换机上),容器之间就可以进行通信;
相关文章推荐
- 网络中进程之间如何通信?
- 网络中进程之间如何通信
- 计算机网络(5.1)运输层-进程之间的通信
- Smart Client Software Factory View之间如何通信
- 关于如何在同一台电脑上的两个安卓模拟器之间的socket通信(图片传输)
- Android如何进行网络通信(与web交互)
- 如何在docker容器和宿主机之间复制文件
- 如何使不同主机上的docker容器互相通信
- [网络通信]同一socket使用两个线程分别收发,如何关闭socket
- Java实现 利用TCP协议实现网络之间的通信
- IMS网络中手机是如何接入通信网络
- Docker容器学习梳理--容器间网络通信设置(Pipework和Open vSwitch)
- 在C#中如何实现Form与Form之间的通信
- CCNA实验1.配置静态路由,使网络之间能够通信。
- [ZZ]使用命名管道通过网络在进程之间进行通信
- iocp网络通信之如何判断客户端连接断开
- 如何设计两个系统之间的通信协议
- 本机两个Android模拟器之间的网络通信
- 一招制敌,如何禁止网络中的某个MAC地址通信
- c语言中如何实现网络通信