--------------------------------------------------------------------------------------
Blog: http://blog.csdn.net/chinagissoft
QQ群:16403743
宗旨:专注于"GIS+"前沿技术的研究与交流,将云计算技术、大数据技术、容器技术、物联网与GIS进行深度融合,探讨"GIS+"技术和行业解决方案
转载说明:文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!
--------------------------------------------------------------------------------------
Docker的网络一般是由在Host主机上的一个veth{id}的虚拟网卡和一个container里面的eth0一一映射
,我们可以看到,在宿主机创建了一个默认Docker0的网桥,该网桥负责把数据流在不同的veth间转发,实现网络的IO。该网桥Bridge(docker0)使用RFC1918私有网络,负责为每一个容器分配IP。
Docker的网络模式
Docker的网络模式包括四种方式:
理解四种网络模式可以类比于我们经常使用的VMWare WorkStation的不同的网络设置。
桥接模式:相当于在整个宿主OS里面,又创建了一个Docker网桥,整个网桥有一个独立的IP段,那么桥接模式的不同容器的网络就是该网桥所处的网络。
如下所示:docker0网桥为172.17.0.1,那么启动的容器实例就是172.17.0.2.....
root@controller:~# ifconfig
docker0 Link encap:Ethernet HWaddr 02:42:17:fb:75:74
inet addr:172.17.0.1 Bcast:0.0.0.0 Mask:255.255.0.0
UP BROADCAST MULTICAST MTU:1500 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:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
eth0 Link encap:Ethernet HWaddr 00:0c:29:8a:ff:d8
inet addr:192.168.12.107 Bcast:192.168.12.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe8a:ffd8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:853 errors:0 dropped:0 overruns:0 frame:0
TX packets:390 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:85058 (85.0 KB) TX bytes:62727 (62.7 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:32 errors:0 dropped:0 overruns:0 frame:0
TX packets:32 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2368 (2.3 KB) TX bytes:2368 (2.3 KB)
主机模式:其实就是所谓的容器网络跟宿主OS的网络是一致的,在执行该操作,添加命令参数:--net host
host表示使用主机的网络栈,那么host主机不会创建veth虚拟网卡映射.
一般情况下,我们通过访问宿主机IP+端口的方式来访问主机模式下容器对象。
当然,如果考虑安全的需要,我们可以进行端口映射。
独立模式:及宿主机内的所有容器网络都是隔离的,我们可以通过none参数,表示关闭container的网络连接
存储挂载
一般情况下,通过添加-v参数,可以将Host上的一个目录绑定到container中,运行container对其进行读写
容器间通信
通过Link参数,把container的端口信息暴露到另一个container中,实现C2C的通信