Docker中的网络与数据管理
实验目的要求
实验要求:
- Docker的网络管理
- Docker Swarm集群的使用
- Volumes数据卷的使用
实验目的: - 了解Docker中的网络、数据管理以及Docker Swarm的基本知识
- 掌握Docker中自定义的网络管理
- 掌握Volumes数据卷管理的基本使用
试验环境
- Java 1.8
- 三台Ubantu 20.02
试验内容
任务一 Docker网络管理
-
在Docker安装时,Docker就会自动创建三种网络,客户端可以通过$docker network ls指令查看。
-
Docker默认网络管理
(1)创建并启动容器 $docker run -itd --name=networktest ubuntu
(2)使用网络查看指令,查看网络详情 $docker network inspect bridge
-
自定义bridge网络
(1)创建自定义网络 d o c k e r n e t w o r k c r e a t e d r i v e r b r i d g e i s o l a t e d n w , 创 建 完 之 后 查 看 docker network create --driver bridge isolated_nw,创建完之后查看 dockernetworkcreatedriverbridgeisolatednw,创建完之后查看docker network ls
(2)使用自定义网络启动容器 $docker run --network=isolated_nw -itd --name=nwtest busybox,启动容器之后,使用指令docker inspect nwtest查看
(3)为容器添加网络管理 $docker network connection bridge nwtest
(4)断开容器网络连接 $docker network disconnection isolated_nw nwtest
(5)移除自定义网络docker network rm isolated_nw
4. 容器之间的网络通信
(1)创建两个使用默认的bridge网络的容器
$docker run -itd --name=containner1 busybox
$docker run -itd --name=container2 busybox
(2)创建一个使用自定义的isolated_nw网络
$docker run --network=isolated_nw -itd --name=container3 busybox
(3)为container2容器新增一个自定义的isolated_nw网络连接
$docker network connect isolated_nw container2
5.容器地址查看
(1)进入container2容器 d o c k e r a t t a c h c o n t a i n e r 2 , 使 用 指 令 docker attach container2,使用指令 dockerattachcontainer2,使用指令ifconfig查看发现内部有两个网卡eth0和eth1,并分别对应的IP地址为172.17.0.6和172.18.0.2
(2)进入容器3和容器4,分别得到地址为172,17.0.5和172.19.0.2
6. 容器通信测试
(1)首先使用$docker start container1指令进入容器内部,同时使用ping 命令连接container3来查看是否能够通信。
(2)使用docker attach container2进入到容器2的内部,使用IP分别连接container1和container进行通信测试。
7.容器之间的网络通信
(1)进入到容器container2内部使用容器分别连接container1和container3进行通信测试。(由于虚拟机中间出现过问题,所以重新开始做了一遍,地址与前面发生了变化)
任务二 Docker Swarm集群
- 环境搭建
(1) 准备3台Ubuntu系统主机(即用于搭建集群的3个Docker机器),每台机器上都需要安装Docker并且可以连接网络,同时要求Docker版本都必须是1.12及以上,因为老版本不支持Docker Swarm。
(2) 集群管理节点Docker机器的IP地址必须固定,集群中的所有节点都能够访问该管理节点。
(3) 集群节点之间必须使用相应的协议并保证其以下端口号可用用于集群管理通信的TCP端口2377;TCP和UDP端口7946,用于节点间的通信;UDP端口4789,用于覆盖网络流量。 - 创建Docker Swarm集群
(1)在名为manager1的Docker机器上创建Docker Swarm集群
(2)在管理结点上,使用docker node ls指令查看集群结点信息
- 向Docker Swarm集群添加工作结点
(1)启动另外两台Docker机器work1和work2,分别打开终端窗口,执行向集群中加入工作结点的指令
(2)在集群管理结点上执行“docker swarm join-token worker”指令进行查看
(3)再次在集群管理结点上使用docker node ls指令查看集群结点信息
- 向Docker Swarm集群部署服务
(1)使用Docker Hub上自带的alpine镜像为例来部署集群服务
- 查看Docker Swarm集群中的服务
(1)在管理结点上通过docker service ls指令查看当前集群中的服务信息
(2)使用docker service inspect指令,查看部署的服务具体详情
(3)使用docker service ps 指令查看指定服务在集群结点上的分配和运行情况
6. 更改Docker Swarm集群服务副本数量
(1)在管理结点manager1上,更改服务副本数量 $docker service scale helloworld=5
7. 删除服务 $docker service rm helloworld
8.访问服务
(1)在集群管理结点manager1上,执行docker network ls执行查看网络列表
(2)在集群管理结点manager1上,创建以overlay为驱动的自定义网络
(3)在集群管理结点manager1上,再次部署服务
(4)在集群管理结点manager1上,使用docker service ps my-web指令查看服务的两个服务副本运行情况
(5)外界访问服务。打开浏览器,使用任意一台结点机器的“IP+8080”端口运行服务访问,都可以正常显示。
任务三 Volumes数据卷管理
1.创建并管理数据卷
(1)创建数据卷 $docker volume create my-vol
(2)查看数据卷 $docker volume ls
2.启动容器并加载数据卷
(1)查看本机容器和数据卷。在Docker主机终端分别使用docker ps -a和docker volume ls指令查看本地Docker机器上存在的容器和数据卷
(2)确认查看本机Docker文件系统中的容器和数据卷。
首先在Docker主机终端中将普通用户切换到root用户,然后进入“/var/lib/docker”目录,即Docker默认在本机上的文件系统目录查看信息。
(3)启动容器并加载数据卷。
使用–mount参数挂载数据卷
使用-v参数挂载数据卷
(4)再次查看本机容器和数据卷列表。
在Docker主机终端分别使用docker ps -a和docker volume ls 指令查看本地Docker机器上存在的容器和数据卷。
(5)检查容器详情
使用docker inspect指令查看容器详情
(6)再次确认本机docker文件系统中的容器和数据卷。
首先在Docker主机终端中将普通用户切换到root用户,然后进入“/var/lib/docker”目录,然后分别进入containers容器文件目录和volumes数据卷文件目录查看内容。