docker 内部ping不通宿主机_Docker容器网络-实现篇

本文深入探讨Docker容器网络,解释了容器如何通过Bridge模式进行内部通信,并讨论了跨主机通信的问题,引出了Overlay Network作为解决多主机容器网络的方案。内容涉及Veth Pair、docker0网桥、ARP协议和容器网络隔离。
摘要由CSDN通过智能技术生成

Docker容器网络-实现篇

通常,Linux容器的网络是被隔离在它自己的Network Namespace中,其中就包括:网卡(Network Interface)、回环设备(Loopback Device)、路由表(Routing Table)和iptables规则。对于一个进程来说,这些要素,就构成了它发起和响应网络请求的基本环境。

前文说到容器网络对Linux虚拟化技术的依赖,这一篇章我们将一探究竟,看看Docker究竟是怎么做的。

管中窥豹

我们在执行docker run -d --name xxx之后,进入容器内部:

## docker ps 可查看所有docker
## 进入容器
docker exec -it 228ae947b20e /bin/bash

并执行 ifconfig:

$ ifconfig
eth0      Link encap:Ethernet  HWaddr 22:A4:C8:79:DD:1A
          inet addr:192.168.65.28  Bcast:0.0.0.0  Mask:255.255.255.255
          UP BROADCAST RUNNING MULTICAST  MTU:1440  Metric:1
          RX packets:2231528 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3340914 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:249385222 (237.8 MiB)  TX bytes:590701793 (563.3 MiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

我们看到一张叫eth0的网卡,它正是一个Veth Pair设备在容器的这一端。

我们再通过 route 查看该容器的路由表:

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         169.254.1.1     0.0.0.0         UG    0      0        0 eth0
169.254.1.1     *               255.255.255.255 UH    0      0        0 eth0

我们可以看到这个eth0是这个容器的默认路由设备

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值