欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-03 10:00:43
...

一、Docker网络管理

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

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

Docker中的网络配置与数据管理Docker中的网络配置与数据管理
(2)使用网络查看指令查看网络详情

$docker network inspect bridge

Docker中的网络配置与数据管理
1.2. 自定义bridge网络
(1)创建自定义网络

$ docker network create --driver bridge isloated_nw 

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

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

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

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

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

Docker中的网络配置与数据管理Docker中的网络配置与数据管理
(3)为容器添加网络管理

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

$docker network connect bridge nwtest

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

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

$docker network	disconnect isolated_nw nwtest

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

(5)移除自定义网络

docker network rm isloated_nw

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

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

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

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

Docker中的网络配置与数据管理
(3)为container2容器新增一个自定义的isolated_nw网络连接
Docker中的网络配置与数据管理
Docker中的网络配置与数据管理
Docker中的网络配置与数据管理
(4)容器地址查看
使用docker attach +容器名先查看各容器的网络地址

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

Docker中的网络配置与数据管理
Docker中的网络配置与数据管理
注:每次重启后网络都会自动重新分配而发生变化,下面我的是重启后验证网络发生了点变化,有点不对应可忽略。
(5)容器通信测试
进入容器后使用ping -w 4 +IP或+容器名来查看已验证通信情况
Docker中的网络配置与数据管理
(从上图可以看出,在container1内部不管是使用"ping IP"还是"ping 容器名称"都无法连通container3。这也就验证了两个容器不在同一个网络环境下,无法通信的判断。)
Docker中的网络配置与数据管理
(从上图可以看出,在container2内部可以使用"ping IP"的命令同时连通container1和container3。)
Docker中的网络配置与数据管理
(从上图可以看出,在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中的网络配置与数据管理
(上述第一条命令执行后,Docker就会自动在IP为192.168.1.113的主机上(即manager1)创建一个Swarm集群,并将该IP地址的主机设置为集群管理节点。)
Docker中的网络配置与数据管理
(3)向Docker Swarm集群添加工作节点
在worker1和worker2主机上执行在管理节点生成的token
Docker中的网络配置与数据管理
Docker中的网络配置与数据管理
Docker中的网络配置与数据管理
(4)向Docker Swarm集群部署服务
Docker中的网络配置与数据管理

上述部署服务指令中各参数具体说明如下:
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集群服务副本数量
Docker中的网络配置与数据管理
(7)访问服务
Docker中的网络配置与数据管理

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

在集群管理节点manager1上创建以overlay为驱动的自定义网络。Docker中的网络配置与数据管理
在manager1上,再次部署服务Docker中的网络配置与数据管理

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

在manager1上使用docker service ps my-web指令看服务的两个服务副本运行情况
Docker中的网络配置与数据管理
外界可通过IP+8080端口访问服务

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

三、 Docker数据管理

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

查看本机系统中的容器和数据卷
Docker中的网络配置与数据管理
启动并挂载容器
Docker中的网络配置与数据管理
再次查看本机容器和数据卷列表
Docker中的网络配置与数据管理
查看容器详情
Docker中的网络配置与数据管理
再次确认本机Docker文件系统中的容器和数据卷(root用户下)
Docker中的网络配置与数据管理