Docker的网络模式介绍

数据库   2024年05月10日 13:06  

这篇文章主要介绍“Docker的网络模式介绍”,在日常操作中,相信很多人在Docker的网络模式介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Docker的网络模式介绍”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1、Docker的四种网络模式

(1)docker四种网络模式如下:

Bridge contauner 桥接式网络模式

Host(open) container 开放式网络模式

Container(join) container 联合挂载式网络模式,是host网络模式的延伸

None(Close) container 封闭式网络模式

(2)可以通过docker network命令查看

[root@along~]#dockernetworklsNETWORKIDNAMEDRIVERSCOPEf23b4899add1bridgebridgelocal65520497f693hosthostlocala0c5f18e0f04nonenulllocal

(3) run --network命令可以指定使用网络模式

2、Bridge网络模式2.1介绍

  当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上,所以有默认地址172.17.0.0/16的地址。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。

  从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。在主机上创建一对虚拟网卡veth pair设备,Docker将veth pair设备的一端放在新创建的容器中,并命名为eth0(容器的网卡),另一端放在主机中,以vethxxx这样类似的名字命名,并将这个网络设备加入到docker0网桥中。可以通过brctl show命令查看。

[root@along~]#brctlshowbridgenamebridgeidSTPenabledinterfacesdocker08000.024241c45d6eno

  bridge模式是docker的默认网络模式,不写--net参数,就是bridge模式。使用docker run -p时,docker实际是在iptables做了DNAT规则,实现端口转发功能。可以使用iptables -t nat -vnL查看。

[root@along~]#iptables-tnat-vnLChainPOSTROUTING(policyACCEPT20packets,1238bytes)pktsbytestargetprotoptinoutsourcedestination00MASQUERADEall--*!docker0172.17.0.0/160.0.0.0/02.2bridge模式示意图2.3演示

bridge网络模式;--network不指定,默认也是bridge模式

[root@along~]#dockerrun--nameb1-it--networkbridge--rmbusybox:latest/#ifconfigeth0Linkencap:EthernetHWaddr02:42:AC:11:00:02inetaddr:172.17.0.2Bcast:0.0.0.0Mask:255.255.0.0inet6addr:fe80::42:acff:fe11:2/64Scope:LinkUPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1RXpackets:12errors:0dropped:0overruns:0frame:0TXpackets:6errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:0RXbytes:1016(1016.0B)TXbytes:508(508.0B)loLinkencap:LocalLoopbackinetaddr:127.0.0.1Mask:255.0.0.0inet6addr:::1/128Scope:HostUPLOOPBACKRUNNINGMTU:65536Metric:1RXpackets:0errors:0dropped:0overruns:0frame:0TXpackets:0errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:1RXbytes:0(0.0B)TXbytes:0(0.0B)/#route-nKernelIProutingtableDestinationGatewayGenmaskFlagsMetricRefUseIface0.0.0.0172.17.0.10.0.0.0UG000eth0172.17.0.00.0.0.0255.255.0.0U000eth0/#ping10.11.55.5正常访问宿主机PING10.11.55.5(10.11.55.5):56databytes64bytesfrom10.11.55.5:seq=0ttl=64time=0.292ms/#exit3、Host网络模式3.1介绍

  如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。

3.2 Host模式示意图3.3演示[root@along~]#dockerrun--nameb2-it--networkhost--rmbusybox:latest/#ifconfig-a和宿主机一样docker0Linkencap:EthernetHWaddr02:42:41:C4:5D:6Einetaddr:172.17.0.1Bcast:0.0.0.0Mask:255.255.0.0inet6addr:fe80::42:41ff:fec4:5d6e/64Scope:LinkUPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1RXpackets:90errors:0dropped:0overruns:0frame:0TXpackets:26errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:0RXbytes:5903(5.7KiB)TXbytes:2381(2.3KiB)eth0Linkencap:EthernetHWaddr00:0C:29:AB:D2:DAinetaddr:10.11.55.5Bcast:10.11.55.255Mask:255.255.255.0inet6addr:fe80::20c:29ff:feab:d2da/64Scope:LinkUPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1RXpackets:3913errors:0dropped:0overruns:0frame:0TXpackets:3327errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:1000RXbytes:354314(346.0KiB)TXbytes:919096(897.5KiB)loLinkencap:LocalLoopbackinetaddr:127.0.0.1Mask:255.0.0.0inet6addr:::1/128Scope:HostUPLOOPBACKRUNNINGMTU:65536Metric:1RXpackets:0errors:0dropped:0overruns:0frame:0TXpackets:0errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:1RXbytes:0(0.0B)TXbytes:0(0.0B)4、Container网络模式4.1介绍

  这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。

4.2 Container模式示意图4.3演示

(1)在一个终端,使用bridge网络模式启动容器b1

[root@along~]#dockerrun--nameb1-it--rmbusybox:latest/#ifconfigb1的ip为172.17.0.2eth0Linkencap:EthernetHWaddr02:42:AC:11:00:02inetaddr:172.17.0.2Bcast:0.0.0.0Mask:255.255.0.0inet6addr:fe80::42:acff:fe11:2/64Scope:LinkUPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1RXpackets:6errors:0dropped:0overruns:0frame:0TXpackets:6errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:0RXbytes:508(508.0B)TXbytes:508(508.0B)loLinkencap:LocalLoopbackinetaddr:127.0.0.1Mask:255.0.0.0inet6addr:::1/128Scope:HostUPLOOPBACKRUNNINGMTU:65536Metric:1RXpackets:0errors:0dropped:0overruns:0frame:0TXpackets:0errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:1RXbytes:0(0.0B)TXbytes:0(0.0B)/#echo"helloworldb1">/tmp/index.html/#httpd-h/tmp/在b1上启动httpd服务/#netstat-nutlActiveInternetconnections(onlyservers)ProtoRecv-QSend-QLocalAddressForeignAddressStatetcp00:::80:::*LISTEN

(2)在另一个终端使用Container网络模式创建容器b2

[root@along~]#dockerrun--nameb2-it--networkcontainer:b1--rmbusybox:latest/#ifconfig-ab2的ip和b1一样eth0Linkencap:EthernetHWaddr02:42:AC:11:00:02inetaddr:172.17.0.2Bcast:0.0.0.0Mask:255.255.0.0inet6addr:fe80::42:acff:fe11:2/64Scope:LinkUPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1RXpackets:8errors:0dropped:0overruns:0frame:0TXpackets:8errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:0RXbytes:648(648.0B)TXbytes:648(648.0B)loLinkencap:LocalLoopbackinetaddr:127.0.0.1Mask:255.0.0.0inet6addr:::1/128Scope:HostUPLOOPBACKRUNNINGMTU:65536Metric:1RXpackets:0errors:0dropped:0overruns:0frame:0TXpackets:0errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:1RXbytes:0(0.0B)TXbytes:0(0.0B)/#wget-O--q127.0.0.1b1启动的httpd服务,在b2上直接访问helloworldb1/#ls/tmp/但是文件系统并不共享,只共享网络5、None网络模式5.1介绍

  使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息,只有lo网络接口。需要我们自己为Docker容器添加网卡、配置IP等。

  不参与网络通信,运行于此类容器中的进程仅能访问本地回环接口;仅适用于进程无须网络通信的场景中,例如:备份、进程诊断及各种离线任务等。

5.2 Node模式示意图5.3演示[root@along~]#dockerrun--nameb1-it--networknone--rmbusybox:latest/#ifconfigloLinkencap:LocalLoopbackinetaddr:127.0.0.1Mask:255.0.0.0inet6addr:::1/128Scope:HostUPLOOPBACKRUNNINGMTU:65536Metric:1RXpackets:0errors:0dropped:0overruns:0frame:0TXpackets:0errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:1RXbytes:0(0.0B)TXbytes:0(0.0B)/#route-nKernelIProutingtableDestinationGatewayGenmaskFlagsMetricRefUseIface/#exit

到此,关于“Docker的网络模式介绍”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

域名注册
购买VPS主机

您或许对下面这些文章有兴趣:                    本月吐槽辛苦排行榜

看贴要回贴有N种理由!看帖不回贴的后果你懂得的!


评论内容 (*必填):
(Ctrl + Enter提交)   

部落快速搜索栏

各类专题梳理

网站导航栏

X
返回顶部