当前位置: 首页 > Linux

企业级微服务实战(七)

时间:2023-04-06 20:44:07 Linux

Docker网络知识补充1创建自定义网桥如果我们想创建一个新的网桥,让其他容器可以使用这个新的网桥,应该如何配置呢?查看dockernetworkcreate命令。[root@docker-server~]#dockernetworkcreate--helpUsage:dockernetworkcreate[OPTIONS]NETWORKCreateanetworkOptions:--attachable启用手动容器附件--aux-addressmap网络驱动程序使用的辅助IPv4或IPv6地址(默认map[])--config-fromstring从中复制配置的网络--config-only只创建一个配置network-d,--driverstring管理网络的驱动程序(默认为“bridge”)--gatewaystringsIPv4或主子网的IPv6网关--ingress创建swarmrouting-mesh网络--internal限制对网络的外部访问--ip-rangestrings从子范围分配容器ip--ipam-driverstringIP地址管理驱动程序(default"default")--ipam-optmap设置IPAM驱动程序特定选项(默认map[])--ipv6EnableIPv6networking--labellist在网络上设置元数据-o,--optmap设置特定于驱动程序的选项(默认map[])--scopestring控制网络的范围--subnetstringsCIDR格式的子网代表网段【最简单用法】[root@docker-server~]#dockernetworkcreatedemo-br0981a814be5bd28e5d7da86c1b1eef25025f94d949bfd960136bfc744870744fb[root@docker-server~]#dockernetworklistNETWORKIDNAMEDRIVERSCOPE355b458a5142bridgebridgelocal981a814be5bddemo-br0bridgelocal0c4d656bf1f6hosthostlocaldb1c96a9b72bnonenulllocal[root@docker-server~]#dockerrun--nametest1--rm-it--networkdemo-br0busybox:latest/#ifconfigeth0Linkencap:EthernetHWaddr02:42:AC:12:00:02inetaddr:172.18.0.2Bcast:172.18.255.255Mask:255.255.0.0UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1RXpackets:6errors:0dropped:0overruns:0frame:0TXpackets:0errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:0RXbytes:532(532.0B)TXbytes:0(0.0B)loLinkencap:LocalLoopbackinetaddr:127.0.0.1Mask:255.0.0.0UPLOOPBACKRUNNINGMTU:65536Metric:1RX数据包:0错误:0丢弃:0溢出:0帧:0TX数据包:0错误:0丢弃:0溢出:0载波:0冲突:0txqueuelen:1000RX字节:0(0.0B)TX字节:0(0.0B)/#查看宿主机网络信息#网桥信息[root@docker-server~]#brctlshowbridgenamebridgeidSTPenabledinterfacesbr-981a814be5bd8000.02421e3e0c31noveth4255755docker08000.0242391fabbdnoveth081morethanonenetworkfound6Bridgebr-981a814be5bd,注意我们正在创建一个网络扩展坞errun--nametest1--rm-it--networkdemo-br0busybox:latest指定的demo-br0是网络名,不是网桥名#网卡信息[root@docker-server~]#ipaddrshow#<无效信息已被省略>113:br-981a814be5bd:mtu1500qdiscnoqueuestateUPgroupdefaultlink/ether02:42:1e:3e:0c:31brdff:ff:ff:ff:ff:ffinet172.18.0.1/16brd172.18.255.255scopeglobalbr-981a814be5bdvalid_lftforeverpreferred_lftforeverinet6fe80::42:1eff:fe3e:c31/64scopelinkvalid_lftforeverpreferred_lftforever可以看到创建的桥br-981a814be5bd,后半部分是网络的ID信息。查看docker本地网络信息[root@docker-server~]#dockernetworklsNETWORKIDNAMEDRIVERSCOPE355b458a5142bridgebridgelocal981a814be5bddemo-br0bridgelocal0c4d656bf1f6hosthostlocaldb1c96a9b72bnonenulllocal5我们可以查看我们网络的部分ID信息:94be可以查看dockernetworkinspectdemo-br0-f{{.Id}}networktest[root@docker-server~]#dockerexec-ittest1ping-c2baidu.comPINGbaidu.com(39.156.69.79):56databytes64bytesfrom39.156.69.79:seq=0ttl=61time=16.730ms64bytesfrom39.156.69.79:seq=1ttl=61time=22.455ms---baidu.comping统计---发送2包,接收2包,0%packetlossround-tripmin/avg/max=16.730/19.592/22.455ms如果我们查看iptablesnat规则,我们会发现多了一个,如下:[root@docker-server~]#iptables-tnat-L-n#无效的输出结果省略了ChainPOSTROUTING(policyACCEPT)目标protoptsourcedestinationMASQUERADEall--172.18.0.0/160.0.0.0/0MASQUERADEall--172.17.0.0/160.0.0.0/0【创建“自定义”网络】例如,我们要创建一个带有一个指定的IP地址段做什么?是否有任何其他信息可以指定?[root@docker-server~]#dockernetworkcreate--gateway="172.20.1.1"--subnet="172.20.0.0/16"--ip-range="172.20.1.0/24"demo-br18d88c0a00e65afd84a4c5ef1f756ff81d8996a2b668cadef914730ab创建一个示例[root@docker-server~]#dockerrun--nametest2--rm-it--network=demo-br1busybox:latest/#ifconfigeth0Linkencap:EthernetHWaddr02:42:AC:14:01:00inetaddr:172.20.1.0Bcast:172.20.255.255Mask:255.255.0.0UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1RXpackets:12errors:0dropped:0overruns:0frame:0TXpackets:0errors:0dropped:0溢出:0载体:0冲突:0txqueuelen:0RX字节:1032(1.0KiB)TX字节:0(0.0B)loLinkencap:LocalLoopbackinetaddr:127.0.0.1Mask:255.0.0.0上环回运行MTU:65536指标:1RX数据包:0错误:0丢弃:0溢出:0帧:0TX数据包:0错误:0丢弃:0溢出:0运营商:0冲突:0txqueuelen:1000RX字节:0(0.0B)TX字节:0(0.0B)/#route-nKernelIP路由表目标网关Genmask标志度量参考使用Iface0.0.0.0172.20.1.10.0.0.0UG000eth0172.20.0。00.0.0.0255.255.0.0U000eth0创建成功,可以使用IP:172.20.1.0,虽然可以正常使用,但是一般我们使用网段的首地址作为主机地址来查看默认路由设置成功。如果我们创建另一个连接到这个网络的实例,我们就可以直接通信。创建另一个实例[root@docker-server~]#dockerrun--nametest3--rm-it--network=demo-br1busybox:latest/#ifconfigeth0Linkencap:EthernetHWaddr02:42:AC:14:01:02inetaddr:172.20.1.2Bcast:172.20.255.255Mask:255.255.0.0UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1RXpackets:6errors:0dropped:0overruns:0frame:0TXpackets:0errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:0RXbytes:516(516.0B)TXbytes:0(0.0B)#lo网卡信息省略在test2容器中创建一个简单的WEB服务/#mkdir/usr/www/#echo"

Welcometowww.byte-edu.com!

">/usr/www/index.html/#httpd-f-h/usr/www/intest3请求/#wget-O--qhttp://172.20.1.0/

欢迎访问www.byte-edu.com!

可以正常请求数据2.将容器添加到我们自定义的网络中您可以使用dockernetworkconnect命令将容器连接到网络。[root@docker-server~]#dockernetworkconnect--helpUsage:dockernetworkconnect[OPTIONS]NETWORKCONTAINERConnectacontainertoanetworkOptions:--aliasstrings为容器添加网络范围的别名--ipstringIPv4地址(例如,172.30.100.104)--ip6stringIPv6地址(e.g.,2001:db8::33)--linklist添加链接到另一个容器--link-local-ipstrings为容器添加本地链接地址这个命令是简单理解,有时候我们需要给容器加网卡,其实就是这样的使用方式。如下:[root@docker-server~]#dockernetworkconnectdemo-br0demo1我们把demo1容器连接到demo-br0网络,看看demo1有什么变化:[root@docker-server~]#dockerexec-它demo1/bin/sh/#ifconfigeth0Linkencap:EthernetHWaddr02:42:AC:11:00:02inetaddr:172.17.0.2Bcast:172.17.255.255Mask:255.255.0.0UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1RX数据包:24错误:0丢弃:0溢出:0帧:0TX数据包:29错误:0丢弃:0溢出:0载波:0冲突:0txqueuelen:0RX字节:1894(1.8KiB)TX字节:1982(1.9KiB)eth1Linkencap:EthernetHWaddr02:42:AC:12:00:03inetaddr:172.18.0.3Bcast:172.18.255.255Mask:255.255.0.0UPBROADCASTRUNNINGMULTICASTMTU:1500Metrics:1RXpacket:8错误:0丢弃:0溢出:0帧:0TX数据包:0错误:0丢弃:0溢出:0载体:0冲突:0txqueuelen:0RX字节:656(656.0B)TX字节:0(0.0B)loLinkencap:LocalLoopbackinetaddr:127.0.0.1Mask:255.0.0.0UPLOOPBACKRUNNINGMTU:65536Metric:1RXpackets:0errors:0dropped:0overruns:0frame:0TXpackets:0errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:1000RXbytes:0(0.0B)TXbytes:0(0.0B)/#你会发现多了一张网卡eth1,所以添加完成了是不是比在VMware上加个网卡更简单?如果不想用,可以直接去掉:[root@docker-server~]#dockernetworkdisconnectdemo-br0demo1/#ifconfigeth0Linkencap:EthernetHWaddr02:42:AC:11:00:02inetaddr:172.17.0.2Bcast:172.17.255.255Mask:255.255.0.0UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1RXpackets:24errors:0dropped:0overruns:0frame:0TXpackets:29errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:0RXbytes:1894(1.8KiB)TXbytes:1982(1.9KiB)loLinkencap:LocalLoopbackinetaddr:127.0.0.1Mask:255.0.0.0UPLOOPBACK运行MTU:65536指标:1RX数据包:0错误:0丢弃:0溢出:0帧:0TX数据包:0错误:0丢弃:0溢出:0载体:0冲突:0txqueuelen:1000RX字节:0(0.0B)TXbytes:0(0.0B)/#注:更多技术博客,请关注字节教育官网。如果您在学习或实验过程中遇到任何问题,请及时与作者沟通。[QQ群374106486]