Docker网络模型详解:六种类型及实际应用场景

创始人
2024-12-17 10:45:55
0 次浏览
0 评论

Docker的网络模型

欢迎来到我的博客:Docker网络模型在上一篇文章中,我使用Docker的Macvlan网络创建了一个OpenWrt服务器作为内网的旁路网关。
使用docker在N1盒子上安装openwrt绕过网关ArmbianFinley'sBlog那么Doc​​ker网络有哪些类型以及每个网络的型号是什么?Docker网络模型有六种:网桥网桥是在数据链路层将多个网段连接成一个子网的设备。
对于Docker来说,也是如此。
同一Bridge网络中的容器可以相互通信。
容器默认处于Bridge模式,无需任何配置。
容器将连接到默认桥接网络。
服务器连接到默认网桥。
主机充当网关,转发容器的网络请求,以便容器完成网络请求。
我们使用的-p8080:80参数相当于端口转发。
其本质是通过桥将外部请求传入容器。
用户自定义网桥当然,除了默认的网桥之外,用户还可以自定义网桥设备。
主要作用是与默认网桥隔离。
将创建一座桥梁。
服务器模式Docker主机和服务器模式容器共享相同的网络命名空间,并且容器没有自己的IP。
您将得到与服务器相同的输出。
该模式有两种应用场景:1.性能优化2.容器需要处理多个端口。
无模式无模式,顾名思义,意味着没有配置网络:与其他容器和虚拟机完全隔离。
IPvlan和MACvlan的主要作用是使容器和主机的网络接口处于同一级别。
该功能由Linux内核执行(需要4.2或更高版本)。
稍后我可能会再写一篇博客来研究内核级的实现。
IPvlan和MACvlan的主要区别在于设备的MAC地址是否相同。
要启用vlan,首先需要以混杂模式打开网卡(即接受所有网络信息)。
IPVLANL2和L3只能为物理接口选择一种模式(L2或L3)。
MACvlan使用上述命令创建桥接MACVLAN,需要指定三件事:1.子网段;2.子网端口3.物理接口。
Overlay模式用于多台Docker主机的情况下(笔者几乎没有这样的使用场景),实现多台主机之间的容器通信。
详细请参考官方文档。
作者不具备使用该技术的条件和场景。
Overlaynetworkdriver|DockerDocs网络测试技巧Docker可以使用alpine镜像进行测试。
通过以下命令创建正在运行的alpine镜像:提示:-d表示在后台运行,-i表示在交互模式下运行。
删除:提示:使用-f忽略是否正在运行。
被使用。
应该是ipvlanl2/macvlan和网桥。
如果端口很少更多暴露的,例如数据库(MySQL为3306,Postgres为7654),可以使用桥接模式下的发布门户。
如果暴露的端口是罕见且独特的端口(例如Syncthing的8384、22000),则可以使用服务器模式。
而如果你需要暴露更多的端口或者有更复杂的服务(比如运行单独的gitlab或omv),那么你应该使用vlan。

以威联通为例,怎么在NAS上以Docker的方式安装openWRT软路由

在QNAPNAS上安装openWRT软路由的一种新方法是使用Docker来提高性能并减少资源消耗。
与虚拟机相比,Docker具有更灵活的资源管理和独立的容器特性,对NAS性能影响更小。
例如,对于TS-464C等搭载Intel处理器的热门NAS来说,8GB内存足以满足日常需求,但选择Docker可以优化内存使用。
安装前,安装并运行openWRT后NAS内存使用率为33%。
内存使用量将显着减少。
我们首先执行简单的Portaner,使用图形界面工具执行此操作,并创建一个名为“portainer”的文件夹来存储Docker数据。
使用QNAP提供的docker-compose文件选择中文Portainer镜像,调整卷映射,然后通过ContainerStation创建应用程序并启动Portainer。
然后,通过SSH连接到NAS并使用Docker创建macvlan网络并确保其与路由器网段匹配。
然后使用esirPG的openWRT镜像和网络创建一个容器,配置防火墙和密码。
重启OpenWRT后,管理界面通过其IP地址进行进一步设置您可以登录。
安装完成后,内存占用仅增加了3%,可见Docker版本的openWRT软轨在资源占用方面实际上优于虚拟机。
此方法适用于支持Docker的NAS设备,特别适合资源有限的用户。
有兴趣的话收藏并关注后续会有更多实用教程分享。

OpenWrt的Docker环境下安装两个以上网心云

在X86-64主机上,成功安装OpenWrt04.06.2024版本的Kiddin9。
目标是在Docker容器中部署和管理两个或多个网络中心云服务。
具体步骤如下:首先,确保主机上安装了Docker和dockerd:

使用终端或PuTTY登录OpenWrt主机,运行以下命令:

opkgupdateopkginstalldockeropkginstalldockerd/etc/init。
d/dockerdstart/etc/init.d/dockerdenable为了优化管理,可以安装luci-app-dockerman,然后重启主机:opkginstallluci-app-dockerman接下来,安装NetcenterCloud镜像并启动容器:

安装NetcenterCloud镜像:

dockerpullonething1/wxedge

配置并启动第一个云网络集线器:

dockerrun-d--name=wxedge1--restart=always--privileged--net=bridge--tmpfs/run--tmpfs/tmp-p18888:18888-v磁盘路径1:/storage:rwonething1/wxedge

重复上述步骤,但为第二个容器网络核心云指定不同的端口和磁盘路径,对于例子:

dockerrun-d--name=wxedge2--restart=always--privileged--net=bridge--tmpfs/run--tmpfs/tmp-p18889:18888-v磁盘路径2:/storage:rwonething1/wxedge

最后通过路由器的管理界面访问两个网络集线器云容器soft:

进入管理界面,输入以下地址,根据当前情况更改IP:

网络中心第一云:软路由/DOCKER主机IP:18888第二云网络中心:软路由/DOCKER主机IP:18889这样就可以使用同一个Docker容器成功部署和管理两个Netcenter实例云。
热门文章
1
C语言字符串常量解析:区别、用途及存储方... 什么是字符串常量字符串常量是C语言中的一种数据类型,它是由一对双引号括起来的字符...

2
C语言printf函数:格式字符串与输出... printf函数中的格式与输出项有什么关系?在C语言中,printf函数中的格式...

3
Excel技巧:计算字符串起始位置与合并... 如何计算字符串在特定文本中的起始位置,怎么计算字符串在特定文本中的起始位置您可以...

4
Python发音全解:掌握正确的发音方法... python怎么读我的很多学习编程的朋友可能都知道Python这个词,但是他们中...

5
字符与字符串:编程中的基础文本类型解析 字符串什么意思字符串是由数字、字母和下划线组成的字符串,表示为s=“a1a2…a...

6
Python编程语言:多领域应用与开发优... Python的作用是什么?Python是一种跨平台计算机编程语言,是ABC语言的...

7
深度解析:C语言编程特点与应用领域 什么叫c语言C语言是一种编程语言。C编程语言应用广泛,具有以下特点和特点:1.语...

8
Java全解析:跨平台编程语言的魅力与多... java是什么Java是一种功能强大的编程语言,被称为“一次编写,随处运行”模型...

9
Excel字符提取技巧:轻松使用LEFT... 如何在Excel中提取文本字符串中的字符?在Excel中,要单独提取文本字符串中...

10
C语言字符串转数字:常用函数及转换技巧详... c语言所有类型转换函数C语言提供了多种类型转换函数,包括atoi()、atol(...