宿主机的容器是如何通过docker0通信的?
发布日期:2021-05-09 01:16:03 浏览次数:17 分类:博客文章

本文共 5183 字,大约阅读时间需要 17 分钟。

������

������������������������������

���������������������������������������������������������������Network Namespace������

  1. ���������network interface���
  2. ���������������loopback device���
  3. ������������Routing Table���
  4. iptables������
    ������ ���������������������������������������������������������-net=host������������Network Namespace������������������������������������������������������������������������������������������������������������������������������
    ������������������������������������������������������������������������������������������IP���������

���������������������������������Network Namespace��������������� ���

  1. ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
  2. ���linux������������������������������������������������������������Bridge���
    ������������������������������������������������������������������MAC���������������������������������������������������������������������������������������Docker������������������������������������������docker0���������������������������������������������������������������

������������������������������docker0���������

���������������Veth Pair���������������������Veth Pair���������������������������������������������������Veth Peer������������������������ ���������������������������������������������������������������������������������������������������������������������������������Network Namespace���

���������Veth Pair������������������������������Network Namspace���������

������������������

���������������������������������������������������nginx-1���nginx-2���������nginx-1������������nginx-2������������������

1. ������������nginx-1������

docker run -d --name=nginx-1 nginx

2.������nginx-1���������������

root@d5bfaab9222e:/# ifconfigeth0: flags=4163
mtu 1500 inet 172.18.0.2 netmask 255.255.0.0 broadcast 172.18.255.255 ether 02:42:ac:12:00:02 txqueuelen 0 (Ethernet) RX packets 3520 bytes 8701343 (8.2 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 3010 bytes 210777 (205.8 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73
mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 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

eth0���������������Veth Pari���������������������

3.������nginx-1���������������������route������������

root@d5bfaab9222e:/# routeKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Ifacedefault 172.18.0.1 0.0.0.0 UG 0 0 0 eth0172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0

������172.18.0.0/16���������������������������eth0���������������Veth Pair������������������������������������������

4.������������������������

������brctl show������

root@VM-0-8-ubuntu:/home/ubuntu# brctl showbridge name	bridge id	STP enabled	interfacesdocker0	8000.0242c635ddb8	no	veth4d1c130

���������������docker0������������veth4d1c130������

5.���������������nginx-2

docker run -d --name=nginx-2 nginx

6.������������������������

root@VM-0-8-ubuntu:/home/ubuntu# brctl showbridge name	bridge id	STP enabled	interfacesdocker0	8000.0242c635ddb8	no	veth4d1c130       vetha9356e9

���������������docker0���������������������veth4d1c130��� vetha9356e9

������������������nginx-1���172.18.0.2���ping������nginx-2���172.18.0.3���������������������������������������������������������

������nginx-1���������nginx-2���������������������

������������Network Namespace���������������������������Veth Pair������+���������������������������������������������������������������

1.nginx-1������nginx-2������IP������������������nginx-1������������������������������

172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0

������������������������ ���IP���������������������������eth0���������������������������������������������

2.���������������������������nginx-2 ������������172.18.0.3���MAC���������������

nginx-1������������������eth0������������������ARP���������������IP������������������MAC������

������eth0������������������Veth Pair������������������nginx-1���������Network Namespace���������������������������������Host Namespace������������������������������������docker0���������
���������������������veth4d1c130���������������������docker0������������������������������������������������������������������������ARC������������������docker0

3.docker0���������������������������nginx-2

docker0������������������������������������������������������������������MAC���������nginx-2���MAC���������������������CAM������������������������������������vetha9356e9������������������������������������������������������������������nginx-2���������Network Namespace���

nginx-2������������������eth0���������������������������������������������������������������������������������������nginx-1

������������iptables���TRACE���������������������������������������������tail -f /var/log/syslog

# iptables -t raw -A OUTPUT -p icmp -j TRACE# iptables -t raw -A PREROUTING -p icmp -j TRACE

���������������

上一篇:《像艺术家一样思考》 Think Like an Artist
下一篇:Kubernetes的RBAC是啥

发表评论

最新留言

不错!
[***.144.177.141]2025年04月07日 04时10分29秒