码迷,mamicode.com
首页 > 其他好文 > 详细

Docker网络

时间:2018-10-10 15:33:10      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:数据报   idg   roman   完全   外部   config   lin   成交   iptables   

 

技术分享图片

none什么都没有的网络,挂在这个网络下的容器除了lo,没有其他任何网卡,容器创建时,可以通过--network=none指定使用none网络。

host容器的网络配置与host完全一样。可以通过--network=host指定使用host网络。host的网络性能很好,但容易产生端口冲突。

bridgebridge网络是用的最广的网络,也是默认的网络,Docker有一个名为docker0linux bridge,如果不指定--network,创建的容器默认都会挂到docker0上。每创建一个容器,就会创建一个veth pair,一端连接在docker0,另一端连接在容器网卡,bridge的端口是私有的,不会占用host端口,如果需要访问则需要通过-p-P做端口映射。

技术分享图片

自定义网络:指定驱动,名称,cidr等可以创建自定义网络,创建完成后,ifconfig会多一个网卡,新创建的网络和docker0类似,可以像使用docker0一样使用它。创建容器时需要指定网络--network,指定好后创建的容器就会挂在这个网络下,

技术分享图片

技术分享图片

技术分享图片

网络隔离

docker依赖iptables来隔离不同的容器网络,通过iptables-save查看

技术分享图片

两个网络的通信被drop掉了,如果希望建在这两个网络上的容器可以通信,则需要在一个容器内添加一个网卡:

 技术分享图片

外部网络

我们知道,在bridge网络下,容器通过docker0或自定义网络来完成交互,访问外网统一需要如此,看下iptables配置:

技术分享图片

这个配置的含义是来着docker0rhj_test网段的数据报会被docker0rhj_test转发到MASQUERADEMASQUERADE可以完成地址伪装,MASQUERADE从服务器的网卡上,自动获取当前ip地址,将包的源地址替换成host的地址发送出去,完成NAT

技术分享图片

 

 

外部网络访问容器数据包方向相反,每一个映射的端口,host都会启动一个docker-proxy进程来处理访问容器的流量,docker-proxy会将我们在端口映射时做的配置做映射,当外部以这个ip和端口访问时,会被转发到docker0网络,再发给容器本身。

技术分享图片

 

Docker网络

标签:数据报   idg   roman   完全   外部   config   lin   成交   iptables   

原文地址:https://www.cnblogs.com/small-office/p/9766407.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!