Docker中的网络与数据管理

**

一:docker网络管理

**

首先我们进行网络设置,给主机配置静态IP地址(根据虚拟机中NAT的网段进行设置,并将虚拟机网络适配器设置为自定义NAT,保证每台主机能够连接外网)
(1)选择编辑连接
Docker中的网络与数据管理_第1张图片
(2)点击添加
Docker中的网络与数据管理_第2张图片

(3)选择以太网,进行新建
Docker中的网络与数据管理_第3张图片

(4)按如下步骤进行保存
Docker中的网络与数据管理_第4张图片
(5)然后点击以太网连接
Docker中的网络与数据管理_第5张图片
(6)将虚拟机网络设为NAT模式
Docker中的网络与数据管理_第6张图片

#接下来就可以进入实验了

1.1 docke默认网络管理

#docker安装时会自动创建三种网络,首先通过网络管理指令进行查看
docker network ls
Docker中的网络与数据管理_第7张图片
下面通过一个示例来演示默认的birdge网络管理方式

(1)创建并启动容器
docker run -itd --name=networktest ubuntu
启动镜像名称为Ubuntu的容器,并为容器命名为networktest
(2)使用网络查看指令查看网络详情
docker network inspect bridge
Docker中的网络与数据管理_第8张图片
#网络详情中包括使用bridge启动的networktest容器

1.2 自定义网络介绍

(1)Bridge networks(桥接网络)

(2)Overlay network in swarm mode(swarm 集群中的覆盖网络)

(3)Custome network plguins(定制网络插件)

1.3 自定义bridge网络

(1)创建自定义网络

sudo docker network create --driver bridge isolated_nw
创建基于bridge驱动的名称为isolated_nw的网络
#查看创建的网络是否成功
docker network ls
Docker中的网络与数据管理_第9张图片
(2)使用自定义网络启动容器
docker run --network=isolated_nw -itd --name=nwtest busybox
Docker中的网络与数据管理_第10张图片
#查看启动后的网络详情
docker inspect nwtest
Docker中的网络与数据管理_第11张图片(3)为nwtest容器添加其他网络管理方式
docker network connect bridge nwtest
在这里插入图片描述
#使用docker inspect nwtest查看网络详情
Docker中的网络与数据管理_第12张图片
Docker中的网络与数据管理_第13张图片
此时容器nwtest就拥有了默认的bridge网络和自定义的isolated_nw网络
(4)断开容器网络连接
docker network disconnect isolated_nw nwtest
在这里插入图片描述
(5)移除自定义网络
docker network rm isolated_nw

1.4 容器之间的网络通信

(1)创建容器
#创建两个使用默认的bridge网络的容器
docker run -itd --name=container1 busybox
docker run -itd --name=container2 busybox
在这里插入图片描述
#创建一个使用自定义的isolated_nw网络(已创建)的容器
docker run --network=isloated_nw -itd --name=container3 busybox
在这里插入图片描述
#为container2新增一个自定义的isolated-nw 网络连接
docker network connect isolated_nw container2
在这里插入图片描述
此时,container2容器同时拥有bridge和isolated_nw两种网络管理方式,container1 使用的是bridge网络管理,container3使用的是自定义的isolated_nw网络管理

(2)容器地址查看

首先进入container2容器
docker attach container2

然后使用ifconfig命令查看
Docker中的网络与数据管理_第14张图片
#查看container1
Docker中的网络与数据管理_第15张图片
#查看container3

Docker中的网络与数据管理_第16张图片
(3)容器通信测试
#首先进入container1
使用ping命令连接container3
Docker中的网络与数据管理_第17张图片
由图可知,1与3无法连通,验证了两个容器不在同一网络环境下无法通信

#在container2内部分别连接container1和container3
Docker中的网络与数据管理_第18张图片
Docker中的网络与数据管理_第19张图片
由此可知,不同容器必须在同一网络环境下通信。默认bridge网络管理的容器可以用ip进行通信,但无法用容器名称通信,而自定义网络管理同时可以使用容器IP和容器名称进行通信

**

二:docker swarm集群

**

2.1 docker swarm概述

#docker swarm集群的优点
a.方便创建和管理集群
b.可扩展
c.可实现期望的状态调节
d.集群中多主机网络自动扩展管理
e.提供服务发现功能
f.可实现负载均衡
g.安全性强
h.支持延迟更新和服务回滚

2.2 docker swarm使用

(1)环境搭建
准备三台Ubuntu系统主机(均按照docker,并且可以连接网络,docker版本1.2以上)
集群管理 节点docker机器的ip地址固定,集群中所有节点能访问该管理节点
节点之间必须使用相应的协议并保证开放。
用于集群管理通信的TCP端口(2377)
用于节点间通信的TCP和UDP端口(7946)
用于覆盖网络流量的UDP端口(4789)

ip地址分布如下:
manger1:192.168.10.222
worker1:192.168.10.223
worker2:192.168.10.224
(2)创建docker swarm集群
#在manger1上创建docker swarm集群
docker swarm init --advertise-addr 192.168.10.222
在这里插入图片描述
#然后在此节点查看集群节点信息
docker node ls
在这里插入图片描述
(3)向docker swarm集群添加工作节点
#启动worker1和worker2机器,执行如下命令加入工作节点
在这里插入图片描述
注:–token 后一定要使用自己在前面创建docker swarm集群时返回的信息

#再次查看集群节点信息
在这里插入图片描述
此时有一个管理节点和两个工作节点,说明集群创建成功

(4)向docker swarm集群部署服务
#使用docker Hub上自带的alpinex镜像来部署
docker service create --replicas 1 --name helloworld alpine ping docer.com
在这里插入图片描述
(5)查看docker swarm 集群中的服务
#在管理节点通过docker service ls查看当前集群中的服务列表信息
在这里插入图片描述
#查看服务部署的具体详情
docker service inspect helloworld
Docker中的网络与数据管理_第20张图片
#查看指定服务在集群节点上的分配和运行情况
docker service ps helloworld
在这里插入图片描述
(6)更改docker swarm 集群服务副本数量
#更改完成后使用docker service ps 查看
Docker中的网络与数据管理_第21张图片(7)删除服务
在这里插入图片描述
#在集群管理节点上删除服务后会在集群中彻底删除

(8)访问服务

#下面通过自定义overlay驱动网络为例来讲解集群下的网络管理与服务访问
a.在集群管理节点上执行docker network ls 来查看网络列表
Docker中的网络与数据管理_第22张图片
b.在管理节点上,创建以overlay为驱动的自定义网络
$ docker network create
–driver overlay
my-multi-host-network
在这里插入图片描述
c.在管理节点上部署服务
$docker service create
–network my-multi-host-network
–name my-web
–publish 8080:80
–replicas 2
nginx
在这里插入图片描述
d.在管理节点上使用docker service ps my-web指令查看服务的两个服务副本运行情况
在这里插入图片描述
#由图看出,该服务两个副本被随机分配到两台节点机器上,并正常运行

e.外界访问服务
#打开浏览器使用任意一台机器的“IP+8080”端口进行服务访问
Docker中的网络与数据管理_第23张图片
Docker中的网络与数据管理_第24张图片
Docker中的网络与数据管理_第25张图片
#均可正常访问部署的服务,这是是由于集群负载均衡器将请求路由到一个活动容器,从而实现容器内部服务的正常访问

三:Volumes 数据卷管理

3.1.数据卷的使用

(1)创建并管理数据卷
#创建一个名为my-vol的数据卷
$docker volume create my-vol
#使用docker volume ls 查看本地数据卷列表
Docker中的网络与数据管理_第26张图片
#使用docker volume inspect 指令查看指定数据卷详情
Docker中的网络与数据管理_第27张图片
#删除指定名称的数据卷
docker volume rm
在这里插入图片描述
(2)启动容器并加载数据卷

#下面来演示如何在容器创建时配置并管理docker volume数据卷
a.在docker主机终端分别使用docker pa -a 和docker volume ls 查看本地docker 机器上存在的容器和数据卷
Docker中的网络与数据管理_第28张图片
在这里插入图片描述
b.确认查看本机docker文件系统中的容器和数据卷
在root用户下,进入“/var/lib/docker"目录
Docker中的网络与数据管理_第29张图片
#containers 和volumes就是用于存放用户创建的容器和数据卷的

c.启动容器并挂载数据卷
$docker run -d
-it
–name devtest
–mount source=myvol,target=/app
busybox:latest
Docker中的网络与数据管理_第30张图片
d.再次查看本机容器和数据卷列表
$docker ps
Docker中的网络与数据管理_第31张图片
e.使用docker inspect 指令查看容器详情
在这里插入图片描述
Docker中的网络与数据管理_第32张图片
f.再次确认本机docker 文件系统中的容器和数据卷
#分别进入containers 容器文件目录和volumes数据卷文件目录查看内容
Docker中的网络与数据管理_第33张图片
Docker中的网络与数据管理_第34张图片
#由图看出,新建的容器和数据卷已自动生成在本地docker文件目录中,此时,如果我们将两个容器都删除,docker文件目录中的容器也会自动消息,但数据卷可以保留,除非数据卷也会被删除。

你可能感兴趣的:(微服务,docker网络与数据管理)