版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Docker容器技术与应用湖北
轻工职业技术学院Docker网络和数据卷管理项目4项目背景随着云计算技术的普及,容器化部署成为企业构建应用的重要方式。在生产环境中,业务系统往往由多个服务组件容器构成,它们之间的高效协作、数据的持久化存储以及跨容器的数据共享变得不可或缺,这使Docker网络和数据卷管理的需求愈发凸显。Docker网络和数据卷管理项目4在生产环境中,经常会碰到需要多个服务组件容器共同协作、对数据进行持久化,或者在多个容器之间共享进程数据等操作。本项目通过2个任务介绍了Docker网络管理、数据卷管理的内容,可实现跨主机甚至跨数据中心的通信,以及容器内数据的共享、备份和恢复。项目四:Docker网络和数据卷管理目录任务4.1、Docker网络管理任务4.2、Docker数据卷管理Docker容器资源控制回顾1、了解控制组(CGroups)的功能2、利用CGoups对CPU进行控制的方法3、利用CGoups对内存进行控制的方法4、利用CGoups对I/O进行控制的方法知识目标了解Docker网络架构。了解Docker网络模式。掌握Docker网络的配置和使用。能力目标掌握Docker网络的配置方法。掌握Docker容器互连的方法。素质目标培养精益求精的工匠精神。树立诚实守信的职业素养。公司员工通过参考工程师小王编写的Docker镜像和容器操作手册,对Docker的操作有了初步了解,但只能实现对容器的基本操作。公司员工希望对Docker的网络、存储技术进行学习。小王通过查阅相关资料,编写了关于Docker网络管理的操作手册。任务4.1Docker网络管理任务要求4.1Docker容器网络架构
容器不是独立的,多个Docker容器可以连接到一起,或者需要与外部网络进行通信,这就需要使用Docker网络。网络可以说是虚拟化技术最复杂的部分之一,也是Docker应用是最重要的环节之一。Docker网络配置主要解决容器的网络连接和容器之间、容器与外部网络之间的通信问题。
从覆盖范围上可以将Docker网络划分为单主机上的网络和跨主机的网络。Docker无论是在单主机上进行部署,还是在多主机的集群上部署,都需要和网络打交道。Docker通过一整套dockernetwork子命令和跨主机的网络支持,允许用户根据应用的拓扑结构创建虚拟网络并将容器接入其所对应的网络。任务4.1Docker网络管理相关知识4.1Docker容器网络架构
为了标准化网络的驱动开发步骤和支持多种网络驱动,Docker公司在Libnetwork中使用了容器网络模型(ContainerNetworkModel,CNM)。CNM提供了可以跨不同网络基础架构、可实现移植的应用,能够在平衡应用的可移植性的同时,不损失基础架构原有的各种特性和功能。任务4.1Docker网络管理相关知识4.1Docker容器网络架构
CNM中包括沙盒(Sandbox)、端点(EndPoint,EP)和网络(Network)3个核心组件。图4-1CNM核心组件的连接任务4.1Docker网络管理相关知识4.1
Docker容器网络架构
(1)沙盒:包含容器的网络配置。可以对容器接口、路由表和域名系统(DomainNameSystem,DNS)设置等进行管理。沙盒的实现可以基于Linux网络命名空间、FreeBSDJail或其他类似概念。一个沙盒可以有多个端点和多个网络。
(2)端点:沙盒通过端点来连接网络。端点的实现可以基于vethpair、OpenVSwitch内部端口或者相似的设备。一个端点只可以属于一个网络并且只属于一个沙盒。
(3)网络:一个网络是一组可以直接互相连通的端点,可以由Linux桥接、虚拟局域网(VirtualLAN,VLAN)等来实现。端点如果不连接到其中一个网络,那么将无法与外界连接。任务4.1Docker网络管理相关知识4.1CNM负责为容器提供网络功能。CNM核心组件与容器的关联方式如下:沙盒被放置在容器内部,为容器提供网络连接。
容器A只有一个端点,连接到了网络A;容器B有两个端点,分别连接到网络A和网络B;容器A与容器B通过网络A实现相互通信,容器B的两个端点之间不能通信,如需通信,则需要三层网络设备的支持。任务4.1Docker网络管理相关知识4.1一个EP端点只可以属于一个网络并且只属于一个沙盒一个网络是一组可以直接互相连通的端点用户可以创建一个或多个网络,一个容器可以加入一个或多个网络。同一个网络中的容器可以相互通信,不同网络中的容器相互隔离。在创建容器之前,用户可以先创建网络,然后再将容器添加到网络,即创建容器与创建网络是分开的。Docker
的本地网络实现是利用了Linux
的NetworkNamespace
和虚拟网络设备(主要是VirtualEthernetPair),在本地主机和容器内分别创建一个虚拟接口,并使它们彼此连通。NetworkNamespace
为容器提供了独立的网络环境。VirtualEthernetPair
简称VETHPair,是一对端口,所有从这对端口进入的数据包都将从另一端出来,反之也是一样。任务4.1Docker网络管理相关知识4.1任务4.1Docker网络管理相关知识4.1Docker网络的实现原理Docker使用Linux桥接,会在宿主机上虚拟一个名为docker0的网桥。当启动容器时,默认会根据网桥的网段分配给容器一个IP地址,该地址称为Container-IP,同时网桥地址是每个容器的默认网关。当同一宿主机的容器都接入该网桥时,容器之间可以通过Container-IP地址相互通信。由于Docker网桥是宿主机虚拟出来的,并不是真实存在的网络设备,因此外部网络无法直接通过Container-IP访问到容器。如果容器希望外部网络能够访问到容器,则可以通过在宿主机和容器之间进行端口映射,即在创建容器时通过-p或者-P参数来启用端口映射,这样在访问容器的时候就能够通过[宿主机IP]:[容器端口]访问到容器。#dockerrun-d--nametest01-Pnginx //指定随机端口,随机端口从32768开始#dockerrun-d--nametest02-p8001:80nginx //指定映射端口驱动描述Host没有命名空间隔离,相当于Docker容器和宿主机共同用一个网络命名空间,使用宿主机的网卡、IP和端口等信息BridgeDocker的默认设置驱动,受Docker管理的Linux桥接网络。默认同一个桥网络的容器可以相互通信Overlay提供多主机的容器网络互连,使用了本地Linux桥接网络和VXLAN技术实现容器之间跨物理网络架构的连接None容器拥有自己的网络命名空间,但不为容器进行任何网络配置。如果没有其他网络配置,则容器将完全独立于网络任务4.1Docker网络管理相关知识4.1Docker网络模式容器网络模型提供了供用户使用的接口,接口主要用于通信、利用供应商提供的附加功能、网络可见性及网络控制等。目前广泛使用的网络驱动包括内置网络驱动和远程网络驱动。常用的内置网络驱动如表所示。Docker网络模式
当使用dockerrun命令创建Docker容器时,可以使用--net选项指定容器的网络模式,Docker有以下4种网络模式。(1)host模式,使用--net=host指定。(2)container模式,使用--net=container:NAME_or_ID指定。(3)none模式,使用--net=none指定。(4)bridge模式,使用--net=bridge指定,是Docker容器的默认设置。任务4.1Docker网络管理相关知识4.1Docker网络模式Docker安装后,会自动创建host、null和bridge网络,可以利用dockernetworkls命令进行查看。[root@localhost~]#dockernetworklsNETWORKIDNAMEDRIVERSCOPEf31c1651be9b bridgebridgelocalde73493d5b60hosthostlocalf414b28986c3nonenulllocal任务4.1Docker网络管理相关知识4.11.host模式在host模式下,容器中的文件系统、进程列表等资源和宿主机是隔离的,但容器的网络环境隔离性被弱化,容器不再拥有隔离的、独立的网络栈,容器内部不会拥有所有的端口资源,这是因为部分端口资源会被宿主机上的应用服务所占用。启动容器时,容器将不会获得独立的网络命名空间,而是和宿主机共用网络命名空间。容器不会虚拟出网卡并配置IP地址,而是使用宿主机的IP地址和端口。例如,利用nginx镜像创建容器并启动,监听80端口,网络模式设置为host模式。[root@localhost~]#dockerrun-dit--net=host-p80:80nginx任务4.1Docker网络管理相关知识4.11.host模式容器启动后,如需访问容器中的nginx应用,则可直接使用“IP地址:80”格式的语句,不需要做网络地址转换(NetworkAddressTranslation,NAT),host模式示例如图所示。任务4.1Docker网络管理相关知识4.11.host模式任务4.1Docker网络管理相关知识4.11、host模式:使用--net=host指定。2、相当于VMware中的桥接模式,与宿主机在同一个网络中,但是没有独立的ip。3、Docker使用Linux的namespace技术来进行资源隔离,如pidnamespace隔离进程,mountnamespace隔离文件系统,networknamespace隔离网络等。4、一个networknamespace提供了一份独立的网络环境,包括网卡、路由、iptables规则等都与其他networknamespace隔离。5、一个Docker容器一般会分配一个独立的neworknamespace,但是如果启动容器的时候使用host模式,那么这个容器不会获得一个独立的networknamespace,而是和宿主机共用一个networknamespace。容器将不会虚拟出自己的网卡,配置自己的ip等,而是使用宿主机的ip和端口,此时容器不再拥有隔离的,独立的网络栈,不拥有所有端口资源。任务4.1Docker网络管理总结4.12.container模式container模式指定了新创建的容器和已经存在的容器共享一个网络命名空间,而不是和宿主机共享。虽然多个容器共享网络环境,但容器和容器、容器和宿主机之间依然形成了网络隔离,这在一定程度上可以节约网络资源。但需要注意的是,容器内部依然不会拥有所有的端口资源。例如,利用busybox镜像创建容器busybox1和busybox2,将busybox2的网络设置为continer模式,与busybox1容器共享网络环境。任务4.1Docker网络管理相关知识4.12.container模式[root@localhost~]#dockerrun-it--namebusybox1busybox/#ipa……inet172.17.0.2/16brd172.17.255.255scopeglobaletho[root@localhost~]#dockerrun-it--namebusybox2--netcontaioner:busybox1busybox//busybox2容器使用的是busybox1容器的网络。/#ipa……inet172.17.0.2/16brd172.17.255.255scopeglobaletho任务4.1Docker网络管理相关知识4.12.container模式总结:1、container模式:使用--net=container:NAME_or_ID指定。2、这个模式指定新创建的容器和已经存在的一个容器共享一个NetworkNamespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP,端口范围等。可以在一定程度上节省网络资源,容器内依然不会拥有所有端口。3、同样,两个容器除了网络方面,其他的如文件系统,进程列表等还是隔离的。4、两个容器的进程可以通过io网卡设备通信。任务4.1Docker网络管理相关知识4.12.container模式任务4.1Docker网络管理相关知识4.13.none模式
在none模式下,Docker容器拥有自己的网络命名空间,但是并不进行任何网络配置。该模式关闭了容器的网络功能,此时容器没有网卡、IP地址、路由等信息。none模式如图所示。用户可以根据需要为容器添加网卡、配置IP地址等。任务4.1Docker网络管理相关知识4.13.none模式例如,使用busybox创建镜像容器,容器名称为busybox1,将网络模式设置为none,并为容器配置IP地址。#dockerrun-dit--name=test_busybox1--net=nonebusybox:latest/#ipaddress1:lo:<LOOPBACK,UP,LOWER_UP>mtu65536qdiscnoqueueqlen1000link/loopback00:00:00:00:00:00brd00:00:00:00:00:00inet127.0.0.1/8scopehostlovalid_lftforeverpreferred_lftforeverinet6::1/128scopehostvalid_lftforeverpreferred_lftforever任务4.1Docker网络管理相关知识4.13.none模式从命令执行的返回信息可知,由于none模式不包含任何的网络配置,其网络配置信息中只包含127.0.0.1的地址。none网络模式的应用场景通常包括:当不希望容器接收任何网络流量时,可以使用none网络模式。当想要在容器内运行某些特殊的服务时,这些服务不需要网络连接,如某些后台任务或守护进程。任务4.1Docker网络管理相关知识4.13.none模式
总结1、none模式:使用--net=none指定。2、使用none模式,docker容器有自己的networkNamespace,但是并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡,IP,路由等信息。3、这种网络模式下,容器只有IO回环网络,没有其他网卡。4、这种类型没有办法联网,但是封闭的网络能很好的保证容器的安全性。5、该容器将完全独立于网络,用户可以根据需要为容器添加网卡。此模式拥有所有端口。(none网络模式配置网络)。6、特殊情况下才会用到,一般不用。任务4.1Docker网络管理相关知识4.13.none模式任务4.1Docker网络管理相关知识4.14.bridge模式Docker默认使用bridge模式,在bridge模式下会为每一个容器分配网络命名空间,并设置IP地址等信息。宿主机上启动的Docker容器会连接到一个虚拟网桥上,当Docker进程启动时,会默认创建一个名为docker0的虚拟网桥。容器通过docker0网桥和IP表的NAT配置与宿主机通信。Docker利用vethpair技术,在宿主机上创建两个虚拟网络接口——veth0和veth1。vethpair设备是一对成对的接口,数据从这对接口的一端进入,从另一端输出。在bridge模式下,Docker容器的通信方式分为容器与宿主机通信、容器与外部网络通信两种。Linux中的veth是一对能互相连接、互相通信的虚拟网卡。通过使用它,我们可以让Docker容器和宿主机通信,或者是在两个Docker容器中进行交流。
任务4.1Docker网络管理相关知识4.14.bridge模式
不过在实际中,我们会想在一台物理机上我们虚拟出来几个、甚至几十个容器,以求得充分压榨物理机的硬件资源。但这样带来的问题是大量的容器之间的网络互联。很明显上面简单的veth互联方案是没有办法直接工作的,我们该怎么办???回头想一下,在物理机的网络环境中,多台不同的物理机之间是如何连接一起互相通信的呢?没错,那就是以太网交换机。同一网络内的多台物理机通过交换机连在一起,然后它们就可以相互通信了。任务4.1Docker网络管理相关知识4.1任务4.1Docker网络管理相关知识4.14.bridge模式在我们的网络虚拟化环境里,和物理网络中的交换机一样,也需要这样的一个软件实现的设备。它需要有很多个虚拟端口,能把更多的虚拟网卡连接在一起,通过自己的转发功能让这些虚拟网卡之间可以通信。在Linux下这个软件实现交换机的技术就叫做bridge(再强调下,这是纯软件实现的),也叫虚拟网桥。4.bridge模式
任务4.1Docker网络管理相关知识4.1系统上安装docker后,默认会生产docker0这个虚拟网桥,可以通过ipa来查看,ip为172.17.0.1,这个虚拟网桥是与主机物理网络接口eth0,进行桥接的,Vethxxx就是容器对于物理主机eth0具体的接口的,进行网络连通的。在启动容器后,可以通过ipa进行查看。4.bridge模式
bridge模式会为每一个容器分配网络命名空间,并设置IP地址等信息。当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。容器通过docker0网桥和IP表的NAT配置与宿主机通信。任务4.1Docker网络管理相关知识4.14.bridge模式在bridge模式下,Docker容器的通信方式分为容器与宿主机通信、容器与外部网络通信两种。(1)容器与宿主机通信。DockerDaemon先将veth0附加到docker0网桥上,保证宿主机的数据能够发往veth0再将veth1添加到Docker容器所属的网络命名空间中,保证宿主机的网络报文发往veth0时可以被veth1收到。(2)容器与外部网络通信。如果需要访问外部网络,则需要采用NAT功能,即使用NATP方式,并需要开地系统的转发支持功能,底层依赖于ip_forward技术。任务4.1Docker网络管理相关知识4.14.bridge模式默认情况下,容器可以访问外部网络。使用bridge模式(默认桥接网络)的容器通过NAT方式实现外部访问,具体通过iptables(Linux的包过滤防火墙)的源地址伪装操作实现。在Docker主机上这种NAT转换过程,如图所示。任务4.1Docker网络管理相关知识4.1容器访问外部4.bridge模式默认情况下,创建的容器不会将其任何端口对外发布,从容器外部是无法访问容器内部的网络应用程序和服务的。从外部访问容器内的应用程序必须要有明确的授权,这是通过内部端口映射来实现的。要让容器能够被外部网络(Docker主机外部)或者那些未连接到该容器的网络上的Docker主机访问,就要将容器的一个端口映射到Docker主机上的一个端口,允许从外部网络通过该端口访问容器。这种端口映射也是一种NAT实现,即目标地址转换(DestinationNAT,DNAT),如图所示。任务4.1Docker网络管理相关知识4.14.bridge模式创建容器时,可以通过P或p参数来指定带口映射,使外部网络访问容器内的网络服务。①-p:该参数指定宿主机与容器的端口关关系,冒号左边是宿主机的端口,右边映射到容器中的端口。②-P:该参数会分配镜像中所有会使用的端口,并映射到主机上的随机端口。任务4.1Docker网络管理相关知识4.1任务4.1Docker网络管理相关知识4.bridge模式使用-p选项发布特点端口5.自定义网络模式在Docker中,可以使用dockernetworkcreate命令来创建自定义网络。例如:#dockernetworkcreate--driver=bridge--subnet=192.168.1.0/24--gateway=192.168.1.1my_custom_network这条命令创建了一个名为my_custom_network的网络,其中--driver=bridge指定了网络类型为桥接,--subnet和--gateway分别指定了子网和网关。任务4.1Docker网络管理相关知识4.15.自定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农产品田间质检取样制度
- 慢病营养干预实施方案
- 筋膜松解术操作规范
- 减脂轻食配餐制作标准指引
- 工程安全试题及详解
- 中医肩颈推拿标准操作流程
- 岗位安全操作技能培训实施细则
- 门店突发事件应急处置预案
- 葡萄霜霉病统防统治用药指南
- 烟草烟草栽培学题库及答案
- 2026年西医医师定期考核练习题库附答案详解(精练)
- 2026年人教版三年级下册道德与法治知识点总结
- 《降维沟通:成为社牛的说话之道》阅读记录
- (2026版)医疗保障基金使用监督管理条例实施细则(定点医疗机构学习与解读)课件
- 2026年十大时事热点话题命题作文素材(全新版)
- 人工智能训练师三级理论知识试题及答案
- 2026抖音小游戏行业白皮书
- 【《离子速度成像技术研究文献综述》5500字】
- 离婚协议书 2026年民政局标准版
- 回款KPI考核制度
- 灌溉工程巡查培训课件
评论
0/150
提交评论