暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

docker网络

Whoooops 2021-08-05
2029

在创建docker时,docker会默认创建三种网络模式:bridge host none。

使用docker info查看

Docker网络 模式

配置说明
host模式–net=host容器和宿主机共享宿主机的ip和端口。容器不会虚拟出自己的网卡
container模 式-net=container:NAME_or_ID容器和另外一个容器共享一个ip端口
none模式–net=none容器有独立的Network namespace,并没有对 其进行任何网络设置, 如分配veth pair 和网桥连接,配置IP等。该模式关闭了容器的网络功能
bridge模式–net=bridge默认为该模式)。此模式会为每一个容器分 配、设置IP等, 并将容器连接到一个docker0虚拟网桥,通过 docker0网桥 以及Iptables nat表配置与宿主机通信。
Macvlan network容器具备Mac地址,使其显示为网络上的物理 设备
Overlay(覆盖网络):利用VXLAN实现的bridge模式

bridge模式

默认的网络模式。bridge模式下容器没有一个公有ip,只有宿主机可以直接访问,外部主机是不可见的,但容 器通过宿主机的NAT规则后可以访问外网。

在该模式下,docker使用veth pair,会在自己的宿主机上创建一个虚拟网卡veth0,在另一个容器里创建一个网卡veth0,并把veth0改为eth0。这样实现docker和容器的沟通。

Bridge桥接模式的缺陷: 

1.最明显的是,该模式下 Docker Container 不具有一个公有 IP,即和宿主机的 eth0 不处于同一个网 段。导致的结果是宿主机以外的世界不能直接和容器进行通信。2.虽然 NAT 模式经过中间处理实现了这一点,但是 NAT 模式仍然存在问题与不便,如:容器均需要在 宿主机上竞争端口,容器内部服务的访问者需要使用服务发现获知服务的外部端口等。3.另外 NAT 模式由于是在三层网络上的实现手段,故肯定会影响网络的传输效率

注意:veth设备是成双成对出现的,一端是容器内部命名为eth0,一端是加入到网桥并命名的veth(通常命名 为veth),它们组成了一个数据传输通道,一端进一端出,veth设备连接了两个网络设备并实现了数据 通信。

host模式相当于Vmware中的NAT模式,与宿主机在同一个网络中,但没有独立IP地址。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿 主机的IP和端口。host最大的优势就是网络性能比较好,但是docker host上已经使用的端口就 不能再用了,网络的隔离性不好。

Container网络模式一种特殊host 网络模式 

这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共 享。两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。

none模式使用none模式。这种类型的网络没有办法联网,自己跟自己玩。封闭的网络能很好的保证容器的安全性。

overlay 网络模式主要用于docker集群部署。 应用场景:需要管理成百上千个跨主机的容器集群的网络时。

macvlan 网络模式macvlan网络模式,最主要的特征就是他们的通信会直接基于mac地址进行转发。这时宿主机其实充当一个二层交换机。容器之间可以直接通过IP互通,通过宿主机上内建的虚拟网络设备(创建macvlan网络时自动创建), 但与主机无法直接利用IP互通。

文章转载自Whoooops,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论