项目8 构建Dk容器虚拟化网络电子课件_第1页
项目8 构建Dk容器虚拟化网络电子课件_第2页
项目8 构建Dk容器虚拟化网络电子课件_第3页
项目8 构建Dk容器虚拟化网络电子课件_第4页
项目8 构建Dk容器虚拟化网络电子课件_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目8构建Docker容器虚拟化网络《云网络技术项目教程》目录/Contents(1)(2)部署单宿主机Docker容器网络部署跨宿主机Docker容器网络项目描述通过部署OpenStack云平台实现了在服务器上快速部署虚拟机,提升了服务器硬件资源的利用率。为了简化应用程序的打包、交付和部署过程,提高了开发人员和运维人员的工作效率,公司决定使用Docker容器技术部署各类业务系统,项目经理要求王亮安装Docker容器引擎,部署单宿主机Docker容器网络和跨宿主机的Docker容器网络。

项目8任务思维导图部署单宿主机Docker容器网络【知识目标】(1)掌握Docker镜像与容器的关系。(2)掌握单宿主机Docker容器的内外网互联方式。(1)能够安装Docker容器引擎。(2)能够部署单宿主机Docker容器网络。【技能目标】网络拓扑必备知识1.Docker容器引擎

Docker是目前最流行的容器引擎之一,它是一个开源的软件平台,用于快速构建、打包和部署应用程序到容器中,它提供了一种轻量级的虚拟化技术,使开发运维人员能够将应用程序及其所有依赖项打包到一个独立的容器中,并在任何环境中以相同的方式运行,Docker容器引擎具备以下特点。(1)镜像管理Docker使用镜像来打包应用程序及其依赖项,镜像是一个只读的模板,包含运行应用程序所需的所有文件和配置。开发人员可以基于现有的镜像构建自定义的镜像,实现应用程序的快速部署。(2)容器管理Docker可以管理容器的生命周期,包括创建、启动、停止、删除等操作。开发人员可以通过Docker命令行工具或DockerAPI来管理容器,实现对应用程序的灵活控制。(3)跨平台支持Docker容器可以在任何支持Docker引擎的平台上运行,无论是物理服务器、虚拟机还是公有云服务,确保了应用程序在不同环境中的一致性。(4)网络管理Docker提供了灵活的网络配置选项,允许容器之间进行通信,也可以通过端口映射将容器暴露给外部网络。(5)存储管理Docker提供了多种存储驱动程序,可以让容器与数据卷和存储卷进行交互,实现数据的持久化和共享。(6)安全性Docker提供了多层次的安全机制,包括命名空间隔离、控制组隔离、资源限制、容器签名等,保障容器环境的安全性。必备知识必备知识2.Docker镜像和容器

镜像和容器是Docker容器化平台中的两个核心概念,它们在容器化应用程序的构建、运行和部署过程中扮演着重要的角色。(1)镜像(Image)镜像是一个只读的模板,它包含了运行容器所需的所有文件系统内容、软件环境、库和设置。可以将镜像看作是一个应用程序的打包和分发形式。Docker镜像由多个层(Layers)组成,每一层都包含了文件系统的一部分或一组操作,这些层组合在一起形成了完整的容器运行环境,镜像是用于创建容器的基础,通过镜像可以创建出一个或多个具体的运行实例,即容器。可以从Docker仓库中下载镜像,也可以编写Dockerfile来定义镜像,然后使用Docker镜像来创建和运行容器。容器可根据镜像的定义快速启动和停止,并且可以在不同的环境中进行部署和移植。(2)容器(Container)容器是基于镜像创建的运行实例,它包含了应用程序及其依赖的所有内容,如文件、环境变量、系统库等,Docker容器提供了一个隔离的运行环境,使得应用程序可以在其中独立运行,不受外部环境的影响,每个容器都是相互隔离的,拥有自己的文件系统、进程空间、网络接口等资源。镜像是容器运行的基础,它提供了应用程序运行所需的所有环境和依赖;而容器则是镜像的运行实例,它提供了一个隔离的运行环境,使得应用程序可以在其中独立运行。这种基于镜像和容器的容器化技术,为开发者提供了一种便捷、高效的应用程序部署和管理方式。必备知识安装基础环境3.Docker容器网络模式

(1)bridge网络模式bridge网桥模式是Docker容器默认网络模式,容器使用独立网络名称空间,在默认模式下,容器连接到docker0虚拟网桥。通过docker0网桥以及Iptables规则与宿主机和外部主机通信。(2)host主机网络模式在

Docker中,使用主机模式网络意味着容器与宿主机共享网络命名空间,容器将直接使用宿主机的网络栈,而不再进行网络地址转换。这种模式下,容器将绑定到宿主机的网络接口上,使得容器可以直接访问宿主机上的所有网络服务,同时也可以让外部网络直接访问到容器内的服务。(3)container容器网络模式container容器网络模式指定新创建的容器和已经存在的一个容器共享一个网络名称空间,而不是和宿主机共享,新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的,两个容器的进程可以通过回环网卡设备通信,container容器网络模式适合两个容器频繁通信的场景。(4)none网络模式none网络模式将容器放置在它自己的网络栈中,它不对网络进行任何配置,该模式关闭了容器的网络功能,通常使用在容器并不需要网络场景下,如只需要写磁盘卷的批处理任务。安装Docker容器引擎1.配置服务器网络环境

首先使用CentOS8.ova模板机创建一台名称为node1的服务器,服务器网卡及IP地址配置如表所示。服务器名称网卡名称连接到网络网络模式IP地址网关node1ens160VMnet1仅主机模式

ens192VMnet8NAT网络模式0服务器ens160网卡作为SecureCRT登录网卡,ens192用于访问外部网络,安装Docker容器引擎。配置完成后,查看node1服务器的网卡和IP地址配置。安装Docker容器引擎2.配置yum源

下载Docker社区版的yum源到本地,如下所示。[root@localhost~]#curl/linux/centos/docker-ce.repo-o/etc/yum.repos.d/docker-ce.repo3.安装启动Docker

需要安装Docker引擎和命令行工具,如下所示。[root@localhost~]#yuminstalldocker-cedocker-ce-cli-y安装完成后,启动Docker引擎并设置为开机自启,如下所示。[root@localhost~]#systemctlstartdocker&&systemctlenabledocker查看Docker引擎版本,如下所示。[root@localhost~]#docker-v结果如下所示。Dockerversion25.0.3,build4debf41安装Docker容器引擎(2)配置免密码登录由于在controller服务器上部署组件时,需要登录本机和compute服务器,为避免每次输入密码,需要配置免密码登录。首先在controller上生成公钥和私钥,命令如下。[root@controller~]#ssh-keygen在出现提示时,直接输入回车即可生成公钥和私钥,然后将公钥拷贝给controller服务器和compute服务器。如下所示。[root@controller~]#ssh-copy-idcontroller[root@controller~]#ssh-copy-idcompute在出现Areyousureyouwanttocontinueconnecting(yes/no/[fingerprint])?提示时,输入YES,然后输入controller或者compute的密码,这里设置的是1,即可实现将公钥拷贝到本机和compute服务器上,实现免密码登录安装Docker容器引擎Docker容器的内外网互联1.Docker容器间互联

(1)docker0网桥安装完docker引擎后,会生成一个docker0的网桥,查看node1服务器的网卡及IP地址,如图所示,从图中可以发现,docker0已经安装到node1服务器上了。当Docker启动时,会在主机上创建一个名为docker0的虚拟网桥,创建的Docker容器连接到这个虚拟网桥上,运行的多个容器通过网桥连接在一个二层网络中。Docker会从定义的私有网络中,选择一个和宿主机不同IP地址分配给docker0,连接到docker0的容器启动时将获取到与docker0同一网络的IP地址。(2)创建2个容器①下载alpine镜像alpine镜像容量比较小,运行镜像成为容器后,容器内支持多种网络命令,如下所示。[root@controller~]#dockerpullalpine使用dockerpull命令可以从默认的Docker仓库下载镜像,这里没有加alpine镜像的版本,采用的是默认版本latest。②查看镜像下载镜像后,可以使用dockerimages查看下载到本地的镜像,结果如图8-5所示Docker容器的内外网互联③创建容器test1基于alpine镜像创建容器test1,如下所示。[root@localhost~]#dockerrun-itd--name=test1alpine/bin/sh以上命令基于alpine镜像创建了test1测试容器,使用-it/bin/sh是开启一个终端shell进程,保持和容器的交互,保证容器一直在运行状态,-d是在后台运行容器。④创建容器test2基于alpine镜像创建容器test2,如下所示。[root@localhost~]#dockerrun-itd--name=test2alpine/bin/sh与test1类似,以上命令基于alpine镜像创建了test2测试容器。Docker容器的内外网互联(3)测试容器连通性①查看test1容器的IP地址首先进入到test1容器,如下所示。[root@localhost~]#dockerexec-ittest1/bin/sh以上命令进入到容器test1中,开启了shell为/bin/sh,查看IP地址,test1容器的IP地址为,如图所示。Docker容器的内外网互联②查看test2容器的IP地址使用exit退出test1容器,然后进入到test2容器,如下所示。[root@localhost~]#dockerexec-ittest2/bin/sh以上命令进入到容器test1中,开启了shell为/bin/sh,查看IP地址,test2容器的IP地址为,结果如图8-7所示。Docker容器的内外网互联③在test2容器中测试与test1容器的连通性在test2容器中测试与test1容器的连通性,结果如图所示。从结果中发现,test2容器和test1是能够相互访问的。Docker容器的内外网互联④查看网桥信息在node1上,查看Docker0网桥信息,如图所示。从图中发现,Docker0网桥连接着两块veth虚拟网卡,两块网卡分别连接到test1和test2容器中。Docker容器的内外网互联2.Docker容器访问外部网络

(1)测试容器访问外部网络主机进入test1容器,测试与外部网络主机的连通性,结果如图所示。Docker容器的内外网互联(2)分析容器访问外部主机网络配置test1容器访问外部网络的原因有三个,一是在test1容器中设置了去往网桥docker0的IP地址网关,如图所示。二是在容器宿主机node1服务器上,设置了默认网关是,通过ens192进行转发,如图所示。Docker容器的内外网互联容器去往外部网络的数据到达docker0后,就会转发到ens192网卡上,三是node1上的iptables规则设置了源地址转换,即将来自/16的数据转换成出口网卡ens192的IP地址,如图所示。Docker容器的内外网互联3.外部主机访问容器

(1)下载nginx镜像首先下载一个nginx的镜像,版本为1.8.1,如下所示。[root@localhost~]#dockerpullnginx:1.8.1(2)运行nginx镜像基于nginx:1.8.1镜像,在后台运行nginx容器,将容器的80端口映射到宿主机node1的0的81端口上,也就是ens192网卡的81端口,如下所示。[root@localhost~]#dockerrun--name=nginx-d-p0:81:80nginx:1.8.1Docker容器的内外网互联(3)外部访问nginx服务在windows主机上,使用浏览器访问地址0:81,结果如下所示。从结果中发现,已经可以在windows上访问服务器node1上的nginx容器了。Docker容器的内外网互联

(4)分析外部主机访问容器的网络配置首先进入nginx容器,查看IP地址为,如图所示。然后查看node1上的iptables地址转换规则。从结果中看出,服务器node1上配置了目的地址转换规则,将访问0的81端口流量发送到的80端口,实现了外部网络主机访问容器内的应用。Docker容器的内外网互联部署跨宿主机Docker容器网络【知识目标】(1)掌握Docker容器自定义网络的特点。(2)掌握跨宿主机Docker容器互联的常用技术。(1)能够创建Docker自定义网络。(2)能够部署跨宿主机Docker容器网络。【技能目标】网络拓扑必备知识1.Docker容器自定义网络

Docker容器自定义网络是由Docker提供的一种功能,用于在容器之间创建一个虚拟的、隔离的网络环境。通过创建自定义网络,可以让连接到同一网络的容器之间进行通信,而与主机上的其他网络和容器隔离开来。自定义网络的主要特点包括以下4点。(1)隔离性自定义网络提供了一种隔离的网络环境,使得连接到同一网络的容器可以相互通信,而与主机上的其他网络隔离开来。这种隔离性能够确保容器之间的通信不会干扰主机上的其他网络或容器。(2)灵活性用户可以根据自己的需求创建多个不同的自定义网络,并将容器连接到这些网络中。这使得可以根据应用程序的需求,将容器组织成不同的网络拓扑结构,以实现更灵活的网络架构。(3)IP地址管理Docker会为每个连接到自定义网络的容器分配一个独立的IP地址,使得容器可以通过IP地址进行通信。此外,Docker还提供了内置的DNS服务,使得容器可以使用其他容器的名称进行解析,而无需使用IP地址。(4)多网络连接一个容器可以连接到多个不同的自定义网络,以便与不同网络的容器进行通信。这种多网络连接功能可以用于构建更复杂的网络架构和应用场景。必备知识2.容器跨宿主机通信常用技术

(1)VXLAN网络VXLAN是一种基于虚拟隧道技术的容器网络解决方案,它可以在底层网络上创建一个逻辑网络,并为每个容器分配唯一IP地址。VXLAN网络可以实现容器跨宿主机和跨数据中心的网络通信,同时也支持网络隔离和高级网络策略。VXLAN的优点是具有较好的可扩展性和灵活性,可以适应不同规模和复杂度的网络环境。(2)Macvlan网络Macvlan是一种基于物理网卡的容器网络解决方案,它可以将容器直接绑定到物理网卡上,并为每个容器分配一个唯一的MAC地址和IP地址。Macvlan网络可以实现容器与宿主机之间的网络隔离,同时也可以实现容器之间的网络通信。Macvlan的优点是网络性能高,且支持多播和广播等高级网络功能,适合需要高性能网络的场景。但是,它也有一些限制,比如不能跨主机使用,且需要提前配置好物理网卡。必备知识(3)Calico网络Calico是一个开源的容器网络和网络安全解决方案,它基于标准的IP协议栈来实现容器的网络互联。Calico使用BGP协议来路由容器之间的流量,可以实现跨宿主机的容器网络通信。(4)Flannel网络Flannel是一个轻量级的容器网络解决方案,它基于VXLAN或UDP报文进行容器间通信。Flannel可以在多个Docker宿主机之间创建一个虚拟网络,并为每个容器分配一个唯一的IP地址。(5)WeaveNet网络WeaveNet是一种开源的容器网络解决方案,并提供丰富的网络策略和安全功能,可以实现容器跨宿主机访问。必备知识创建Docker自定义网络1.配置服务器网络环境

首先使用CentOS8.ova模板机创建两台服务器,名称为node1和node2,服务器网卡及IP地址配置如表所示。服务器名称网卡名称连接到网络网络模式IP地址网关node1ens160VMnet1仅主机模式

ens192VMnet8NAT网络模式0Node2ens160VMnet1仅主机模式

ens192VMnet8NAT网络模式0服务器ens160网卡作为SecureCRT登录网卡,ens192用于访问外部网络,安装Docker容器引擎,同时作为两台服务器上容器之间的互联网卡,配置完成后,查看node1服务器的网卡和IP地址配置,如图所示。查看node2服务器的网卡和IP地址配置,如图所示。创建Docker自定义网络2.安装Docker容器镜像

按照任务8-1安装Docker容器引擎方法在服务器node1和node2上安装Docker引擎,查看node1上的Docker容器版本,如图所示。查看node2上的Docker容器版本,如图所示。创建Docker自定义网络3.创建自定义网络

(1)在node1服务器上创建Docker容器自定义网络创建名称为mynet,子络地址为/16的自定义网络,如下所示。[root@node1~]#dockernetworkcreate--subnet=/16mynet创建完成后,查看Docker容器网络,结果如图所示(2)在node2服务器上创建Docker容器自定义网络创建名称为mynet,子络地址为/16的自定义网络,如下所示。[root@node2~]#dockernetworkcreate--subnet=/16mynet创建完成后,查看Docker容器网络,结果如图所示创建Docker自定义网络部署Docker容器跨宿主机互联网络1.基于自定义网络创建容器

(1)下载alpine镜像使用alpine镜像运行测试容器,在两台服务器上都下载镜像,如下所示。[root@node1~]#dockerpullalpine[root@node2~]#dockerpullalpine(2)在node1上创建测试容器test1基于alpine镜像和mynet自定义网络创建容器test1,如下所示。[root@node1~]#dockerrun-itd--name=test1--ip--network=mynetalpine/bin/sh在node1上基于alpine镜像和mynet自定义网络创建了test1测试容器,指定了容器的IP地址为,使用-it/bin/sh是开启一个终端shell进程,保持和容器的交互,保证容器一直在运行状态,-d是在后台运行容器。(3)在node2上创建测试容器test2基于alpine镜像和mynet自定义网络创建容器test2,如下所示。[root@node2~]#dockerrun-itd--name=test2--ip--network=mynetalpine/bin/sh在node2上基于alpine镜像和mynet自定义网络创建了test2测试容器,指定了容器的IP地址为,使用-it/bin/sh是开启一个终端shell进程,保持和容器的交互,保证容器一直在运行状态,-d是在后台运行容器。部署Docker容器跨宿主机互联网络(4)查看node1和node2的网桥在node1上查看网桥及连接网卡,结果如图所示。从结果中发现,node1增加了的网桥br-7e4e91eb5623,连接到了veth220e278网卡,新增加的网桥是由于创建了mynet自定义网络,绑定的网卡连接到了容器test1。在node2上查看网桥及连接网卡,结果如图所示。从结果中发现,node2增加了的网桥br-7a24cde993c6,连接到了veth931b54f网卡,新增加的网桥是由于创建了mynet

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论