Docker中的网络配置与数据管理

Docker中的网络与数据管理

    • 一、Docker网络管理
    • 二、Docker Swarm集群搭建
    • 三、 Docker数据管理

一、Docker网络管理

1.1. Docker默认的bridge网络管理
在进行Docker安装时,Docker就会自动创建三种网络。客户端可以通过网络管理指令进行查看,具体操作指令如下。Docker中的网络配置与数据管理_第1张图片
(其中bridge是容器创建时默认的网络管理方式,配置后可以与宿主机通信从而实现与互联网通信功能,而host和none属于无网络,容器添加到这两个网络时不能与外界网络通信)
(1)创建并启动容器

$docker run -itd --name=networktest ubuntu #该指令在后台启动了一个镜像名称为ubuntu的容器,并为启动后的容器命名为networktest
执行后我们可以使用 $docker images 和 $docker ps 分别查看镜像和容器的运行情况

Docker中的网络配置与数据管理_第2张图片在这里插入图片描述
(2)使用网络查看指令查看网络详情

$docker network inspect bridge

Docker中的网络配置与数据管理_第3张图片
1.2. 自定义bridge网络
(1)创建自定义网络

$ docker network create --driver bridge isloated_nw 

#--drive 用于指定网络驱动类型,isolated_nw为新创建的网络名称。

$docker network ls    #可用于查看新网络是否创建成功

Docker中的网络配置与数据管理_第4张图片
(2)使用自定义网络启动容器

$docker run --network=isolated_nw -itd --name=nwtest busybox

#执行上述指令后,会创建一个名为nwtest的容器,可看到--network参数指定了网络连接为isolated_nw
$docker inspect nwtest 可用于查看启动后容器的网络详情

Docker中的网络配置与数据管理_第5张图片Docker中的网络配置与数据管理_第6张图片
(3)为容器添加网络管理

#名为nwtest的容器使用的只有i自定义的isolated_nw一种网络管理方式,我们还可以添加默认的bridge模式到该容器,命令如下:

$docker network connect bridge nwtest

然后再次使用inspect查看网络详情,效果如下:

Docker中的网络配置与数据管理_第7张图片
Docker中的网络配置与数据管理_第8张图片
(4) 我们也可以断开网络连接命令如下:

$docker network	disconnect isolated_nw nwtest

注:一个容器可以添加若干网络,但当使用断开网络指令后,虽然容器还在运行,但容器内的应用将无法被外界访问。
(此处因为后面还要用到故先不断开,下一步也不移除。有需要时再使用这两命令)

(5)移除自定义网络

docker network rm isloated_nw

**1.3 不同 容器之间的网络通信 **
Docker中的网络配置与数据管理_第9张图片
(1)创建容器

$docker run -itd --name=container1 busybox
$docker run -itd --name=container2 busybox

Docker中的网络配置与数据管理_第10张图片
(2)创建一个使用自定义的isloated_nw网络的容器

$docker run --network=isloated_nw -itd --mname=container3 busybox

在这里插入图片描述
(3)为container2容器新增一个自定义的isolated_nw网络连接
在这里插入图片描述
Docker中的网络配置与数据管理_第11张图片
Docker中的网络配置与数据管理_第12张图片
(4)容器地址查看
使用docker attach +容器名先查看各容器的网络地址

$docker attach container2 #进入container2使用ifconfig查看网络
用CTRL+p+q退出容器

Docker中的网络配置与数据管理_第13张图片
Docker中的网络配置与数据管理_第14张图片
注:每次重启后网络都会自动重新分配而发生变化,下面我的是重启后验证网络发生了点变化,有点不对应可忽略。
(5)容器通信测试
进入容器后使用ping -w 4 +IP或+容器名来查看已验证通信情况
在这里插入图片描述
(从上图可以看出,在container1内部不管是使用"ping IP"还是"ping 容器名称"都无法连通container3。这也就验证了两个容器不在同一个网络环境下,无法通信的判断。)
Docker中的网络配置与数据管理_第15张图片
(从上图可以看出,在container2内部可以使用"ping IP"的命令同时连通container1和container3。)
Docker中的网络配置与数据管理_第16张图片
(从上图可以看出,在container2内部可以使用"ping 容器名称"的命令可以连通container3,而连接container1错误。)

结论:
不同容器之间想要相互通信必须在同一个网络环境下;使用默认bridge网络管理的容器可以使用容器IP进行通信,但无法使用容器名称进行通信;而使用自定义网络的管理则同时使用容器IP和容器名称进行通信。

二、Docker Swarm集群搭建

2.1. Docker Swarm使用
在/etc/hostname下可修改主机名称
(1)环境搭建

主机地址 IP地址
manager1 192.168.1.113
worker1 192.168.1.114
worker2 192.168.1.115

(2)创建Docker Swarm集群
在这里插入图片描述
(上述第一条命令执行后,Docker就会自动在IP为192.168.1.113的主机上(即manager1)创建一个Swarm集群,并将该IP地址的主机设置为集群管理节点。)
在这里插入图片描述
(3)向Docker Swarm集群添加工作节点
在worker1和worker2主机上执行在管理节点生成的token
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(4)向Docker Swarm集群部署服务
在这里插入图片描述

上述部署服务指令中各参数具体说明如下:
docker service create指令:用于在Swarm集群中创建一个基于alpine镜像的服务。
replicas参数:指定了该服务只有一个副本实例。
name参数:指定创建成功后的服务名称为helloworld。
ping docker.com指令:表示服务启动后执行的命令。

(5)查看Docker Swarm集群中的服务

$docker service ls  #查看当前集群中的服务列表信息
$docker service inspect helloworld  #查看部署的服务具体详情
$docker service ps helloworld  #查看指定服务在集群节点上的分配和运行情况

(6)更改Docker Swarm集群服务副本数量
在这里插入图片描述
(7)访问服务
Docker中的网络配置与数据管理_第17张图片

上述命令在集群管理节点manager1上,执行命令查看网络列表。从结果可以看出,与非集群环境下的Docker网络相比,Docker Swarm集群网络列表中分别增加了一个以bridge和overlay为驱动的网络。在集群中发布任务时,如果没有指定网络,那么默认都是使用名为ingress网络连接的,而在实际开发中,则会使用自定义的overlay驱动网络进行服务管理。

在集群管理节点manager1上创建以overlay为驱动的自定义网络。Docker中的网络配置与数据管理_第18张图片
在manager1上,再次部署服务在这里插入图片描述

上述部署服务指令中各参数具体说明如下:
network参数用于指定服务使用自定义的overlay驱动网络连接。
name参数:指定服务启动后的名称。
publish参数:用于映射对外服务端口。
replicas指令:用于指定该服务的副本数量。
nginx表示是基于nginx镜像构建的服务。

在manager1上使用docker service ps my-web指令看服务的两个服务副本运行情况
在这里插入图片描述
外界可通过IP+8080端口访问服务

Docker中的网络配置与数据管理_第19张图片
Docker中的网络配置与数据管理_第20张图片
Docker中的网络配置与数据管理_第21张图片

三、 Docker数据管理

3.1 Valumes数据卷使用
(1)创建并查看核查数据卷
Docker中的网络配置与数据管理_第22张图片
(2)启动容器并加载数据卷
Docker中的网络配置与数据管理_第23张图片

查看本机系统中的容器和数据卷
Docker中的网络配置与数据管理_第24张图片
启动并挂载容器

再次查看本机容器和数据卷列表
在这里插入图片描述
查看容器详情
Docker中的网络配置与数据管理_第25张图片
再次确认本机Docker文件系统中的容器和数据卷(root用户下)
Docker中的网络配置与数据管理_第26张图片

你可能感兴趣的:(Docker中的网络配置与数据管理)