Docker中的网络与数据管理

一、Docker网络管理
1、Docker的默认网络管理
在进行Docker安装时,Docker就会自动创建三种网络,客户端可以通过网络管理指令进行查看:
在这里插入图片描述
下列通过一个示例来演示默认的brige网络管理方式
(1)创建并启动容器
在这里插入图片描述 上述指令在后台启动了一个镜像名称为ubuntu的容器,并为启动的容器命名为networktest
(2)使用网络查看指令查看网络详情:
在这里插入图片描述
2、自定义网络介绍
虽然Docker提供的默认网络的使用比较简单,但是为了保证各容器中应用的安全性,在实际开发中更推荐使用自定义的网络进行容器管理。
在Docker中,可以自定义bridge网络、overlay 网络,也可以创建network plugin (网络插件)或者远程网络以实现容器网络的完全定制和控制。接下来将分别针对这几种自定义网络进行讲解。
(1) Bridge networks (桥接网络)
为了保证容器的安全性,我们可以使用基于bridge的驱动创建新的bridge 网络,这种基于bridge驱动的自定义网络可以较好地实现容器渦离。
需要说明的是,这种用户自定义的基于bridge驱动的网络对于单主机的小型网络环境管理是一个不错的选择,但是对于大型的网络环境管理(如集群)就需要考虑使用自定义overlay集群网络。
(2) Overlay network in swarm mode ( Swarm集群中的覆盖网络)
在Docker Swarm集群环境下可以创建基于overlay驱动的自定义网络。为了保证安全性,
Swarm集群使自定义的overiay网络只适用于需要服务的群集中的节点,而不会对外部其他服本或者Docker主机开放。
(3)Custom network plugins (定制网络插件)
如果前面几种自定义网络都无法满足需求时,就可以使用Docker提供的插件来自定义网体驱动插件。自定义网络插件会在Docker进程所在主机上作为另一个运行的进程。
自定义网络驱动插件与其他插件遵循相同的限制和安装规则,所有插件都使用Docker提快的插件API,并且有一个包含安装、启动、停止和激活的生命周期。由于自定义网络播件使用较少,所以读者只需了解即可。
3、自定义 bridge网络
(1)创建自定义网络
在Docker主机上可以使用docker network create指令来创建网络,具体操作指令如下:
在这里插入图片描述
执行上述指令可以创建一个基于bridge驱动的名称为isolated_nw的网络。其中–driver(可简写为-d) 用于指定网络驱动类型,isolated_nw就是新创建的网络名称。 需要说明的是,-- driver bridge可以省略,省略时Docker会默认使用基于bridge驱动来创建新的网络。
创建完网络后,可以使用docker network Is指令查看创建的网络是否成功。
在这里插入图片描述
(2)使用自定义网络启动容器
自定义网络创建成功后,就可以使用该网络启动一个容器,具体指令如下:
在这里插入图片描述
执行上述指令后,会创建一个名为nwtest的容器,指令中的–network参数指定了该容器的网络连接为自定义的isolated_nw
查看启动后的容器:
在这里插入图片描述
在这里插入图片描述
(3)为容器添加管理
在这里插入图片描述
执行上述指令后,会为容器nwtest另添加一种默认的brige的网络管理方式,再次查看容器网络详情:
在这里插入图片描述
(4)断开容器网络连接:
在这里插入图片描述
(5)移除自定义网络:
移除自定义的指令如下:
docker network rm isolated_nw
4、容器之间的网络通信
(1)创建容器
a、创建两个实验默认的bridge网络的容器,具体操作指令如下:
在这里插入图片描述
b、创建一个使用自定义的isolated_nw网络(需要预先创建)的容器,具体操作指令如下:
在这里插入图片描述
c、为container2容器新增一个自定义的isolated_nw网络连接,具体指令如下:
在这里插入图片描述
执行完上诉指令后,container2容器就同时拥有了bridge和isolated_nw两种网络管理方式
(2)容器地址查看
首先,进入container2容器,使用ifconfig指令查看当前容器被动态分配的IP地址:
在这里插入图片描述
接下来,分别进入容器container1和container3,并通过ifconfig指令查看对应容器的IP地址:
在这里插入图片描述
在这里插入图片描述
(3)容器通信测试
首先,使用docker atach container1指令进入containert容器内部,使用ping指令连canaine3来查看是否能够通信,效果如图所示:
在这里插入图片描述
从上图可以看出,在containert内部不管是使用"ping-w4IP" (-w4限制响应4次),还是"ping -W4容器名称”的指令都无法连通container3。这也就验证了两个容器不在同一个网络环境下,无法通信的判断。
接着,使用docker atach container2指令进入container2容器内部,使用容器IP分别连接conianer和conta ner3进行通信测试,效果如下图:
在这里插入图片描述
从上图可以看出,在containern2内部使用"ping-W4IP” 的指令可以同时连通container1gcontainer3,这也与前面的分析结果相同。
最后,再在container2容容器内部使用容器名称分别连接container1和container3进行通信测试,效果如图:
在这里插入图片描述
从上图可以看出,在container2 内部使用"ping -W 4容器名称”的指令可以连通container3,而连接container1却显示"bad address ‘container1’" 错误。
二、Docker Swarm集群
1、Docker Swarm使用
(1)环境搭建
a、准备3台Ubuntu系统主机(即用于搭建集群的3个Docker机器),每台机器上都需要安装Docker并且可以连接网络
b、集群管理节点Docker机器的ip地址必须固定,集群中的所有节点都可访问该管理节点
c、集群节点之间必须使用相应的协议并保证其以下端口号可用:
用于集群管理通信的TCP端口2377
TCP和UD端口7946,用于节点间的通信
UDP端口4789,用于覆盖网络流量
此处三台机器主机名风别为manager1(管理节点)、worker1、worker2,其ip地址如下:
manager1 192.168.17.111
worker1 192.168.17.112
worker2 192.168.17.113
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
检验网络连通性
在这里插入图片描述
修改主机名:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加镜像:
在这里插入图片描述
(2)创建Docker Swarm集群
a、在名为manager1的Docker机器上创建Docker Swarm集群,具体操作指令如下。
在这里插入图片描述
执行上述指令后,Docker就会自动在IP为192 168.197.143的机器上(也就是manegert机器上)创建一个Swarm集群,并将该IP地址的机器设重为集群管理节点。
b、在管理节点上,查看集群节点信息:
在这里插入图片描述
(3)向Docker Swarm 集群添加工作节点
a、启动另外两台Docker机器worker1和worker2,分别打开终端窗口,执行向集群中加入工作节点的指令:
在这里插入图片描述
在这里插入图片描述
b、再次在集群的管理节点上查看集群节点信息:
在这里插入图片描述
(4)向Docker Swarm集群部署服务
在Docker Swarm集群中部署服务时,既可以使用Docker Hub上自带的镜像来启动服务,也可以使用自己通过Dockerfile构建的镜像来启动服务,如果使用自己通过Dockerfile构建的镜像来启动服务那么必须先将镜像推送到Docker Hub中心仓库
这里使用Docker Hub上自带的apline镜像为例来部署集群服务
在这里插入图片描述
(5)查看Docker Swarm集群中的服务
a、当服务部署完成后,在管理节点上可以通过docker service ls 指令查看当前集群中的服务列表信息,拘役指令如下:
在这里插入图片描述
b、可以使用docker service inspect指令,查看部署的服务具体详情,具体操作指令如下:
在这里插入图片描述
c、可以使用docker service ps指令查看指定服务在集群节点上的分配和运行情况,具体操作指令如下:
在这里插入图片描述
(6)在管理节点manager1上,更改服务副本数量的指令如下:
在这里插入图片描述
从上图可以看出,helloworld服务的5个副本实例被随机分配到了manager1、worker1和worker2三个节点上运行,并且他们的状态都是Runing,表示服务正常运行
(7)删除服务
在这里插入图片描述
(8)访问服务
前面部署的服务都没有直接向外界暴露服务端口,外界也无法正常访问服务,接下来我i们就通过自定义overly驱动网络例来讲解集群下的网络管理与服务访问,具体的实现过程如下
a、在集群管理节点 managert上,执行docker newock Is指令查看网络列表
在这里插入图片描述
b、在集群管理节点manager1上,创建以overay为驱动的自定义网络,具体操作指令如下。
在这里插入图片描述
上述指令以overay为驱动创建了一个名为my-muli-hnost-network的网络。
c、在集群管理节点manager1上,再次部善服务,具体操作指令如下。
在这里插入图片描述
上述部署服务的指令中,–nework参数用于指定服务使用自定义的overlay 驱动网场my-mul-host-network连接; - name 参数用于指定服 务自动后的名称: -pubihn (也可以使用-p)参数用于映射对外服务端口: -feplic参数用于指定该服务的副本数量: ngimn. 表示是基于nginx镜像构建的服务。
d、在集群管理节点manager1上,使用dockers service ps my-web指令查看服务的两个服务副本运行情况
在这里插入图片描述
e、外界访问服务
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
三、Volumes数据卷管理
1、Volumes数据卷使用
(1)创建并管理数据卷
a、创建数据卷
在Docker主机终端,通过docker volume create指令创建一个名为my-vol的数据卷,具体操作指令如下:
在这里插入图片描述
b、查看数据卷
在这里插入图片描述
c、核查数据卷
在这里插入图片描述
执行上述命令后,会将名为my-vol的数据卷的详细信息展示出来
d、删除数据卷
在这里插入图片描述
(2)启动容器并加载数据卷
a、查看本机容器和数据卷
在这里插入图片描述
在这里插入图片描述
b、确认查看本机Docker文件系统中的容器和数据卷
在这里插入图片描述
c、启动容器并挂载数据卷
使用docker run指令创建并启动一个容器,同时挂载一个数据卷,具体操作指令如下:
在这里插入图片描述
也可以使用-v参数挂载数据卷,具体操作指令如下:
在这里插入图片描述
d、再次查看本机容器和数据卷列表
在这里插入图片描述
在这里插入图片描述
e、检查容器详情
在这里插入图片描述
f、再次确认本机Docker文件系统中的容器和数据卷
在这里插入图片描述
在这里插入图片描述
从上图中可以看出,新建的两个容器和数据卷已自动生成在本地Docker文件目录中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值