Docker的使用(五:Docker中的网络与数据管理)

实验环境

三台运行有Ubuntu 16.04 操作系统的虚拟机,并每台主机中已安装docker环境;

学习目标

  1. docker的网络管理
  2. docker Swarm集群的使用
  3. Volume数据卷的使用

实验内容

任务一:Docker网络管理

1、Docker默认网络管理

docker安装时自动创建三种网络。客户端可以通过网络管理指令查看。

sudo docker network ls

Docker的使用(五:Docker中的网络与数据管理)_第1张图片

下面通过一个示例来演示默认的birdge网络管理方式

(1)创建并启动容器

sudo run -itd --name=networktest ubuntu

(2)使用网络查看指令查看网络详情

sudo docker network inspect bridge

Docker的使用(五:Docker中的网络与数据管理)_第2张图片

2、自定义网络介绍

(1).Bridge networks(桥接网络)

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

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

3、自定义bridge网络

(1)使用如下命令在Docker主机上创建网络

docker network create --driver bridge isolated_nw

Docker的使用(五:Docker中的网络与数据管理)_第3张图片

(2)使用自定义网络启动容器,操作指令如下:

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

Docker的使用(五:Docker中的网络与数据管理)_第4张图片

(3)为容器添加网络管理,操作指令如下:

docker network connect bridge nwtest

Docker的使用(五:Docker中的网络与数据管理)_第5张图片

(4)断开容器网络连接,操作指令如下:

docker network disconnect isolated_nw nwtest

(5)移除自定义网络,操作指令如下:

docker network rm isolated_nw 

注:此操作在执行命令后会返回网络名称。

4、容器之间的网络通信

4.1、创建容器

  • 创建两个默认的bridge网络的容器,操作指令如下:
sudo docker run -itd --name=container1 busybox

sudo docker run -itd --name=container2 busybox

Docker的使用(五:Docker中的网络与数据管理)_第6张图片

  • 创建一个使用自定义的isolated_nw 网络的容器,操作指令如下:
docker run --network=isolated_nw -itd --name=container4 busybox

  • 为container2添加一个isolated-nw 网络连接,操作指令如下:
docker network connect isolated_nw container2

4.2、容器地址查看

注:首先进入到container2容器,操作指令如下:

docker attach container2
  • 使用ifconfig命令查看

Docker的使用(五:Docker中的网络与数据管理)_第7张图片

  • 分别查看其余两个容器的地址

Docker的使用(五:Docker中的网络与数据管理)_第8张图片

4.3、容器通信的测试

  • 进入容器1,ping容器4

Docker的使用(五:Docker中的网络与数据管理)_第9张图片

注:网络通信失败,因为容器在不同网络环境下无法通信。

  • 进入到容器2中,使用容器的ip地址链接容器1余容器4的通信测试;

Docker的使用(五:Docker中的网络与数据管理)_第10张图片

注:通信测试成功

总结:不同容器必须在同一网络环境下通信。默认网络管理的容器可以用ip进行通信,无法用容器名称通信,而自定义网络管理的容器则同时可以使用容器IP和容器名称进行通信。

 

任务二、Docker Swarm集群

1、Docker Swarm的使用

1.1、环境的准备

          注:准备三台Ubuntu,docker版本1.2以上,ip地址固定,TCP端口2377,7946,4789开放。

                 ip地址如下:

                 manger1:192.168.159.143

                 worker1:192.168.159.144

                 worker2:192.168.159.145

  • 修改主机名,并添加地址映射

Docker的使用(五:Docker中的网络与数据管理)_第11张图片

  • 网络连通性测试

Docker的使用(五:Docker中的网络与数据管理)_第12张图片

1.2、创建Docker Swarm集群

a)在名为manager1的Docker机器上创建Docker Swarm集群,具体操作指令如下:

docker swarm init --advertise-addr 192.168.159.143

Docker的使用(五:Docker中的网络与数据管理)_第13张图片

注:生成的指令是用来创建worker节点的命令

b)在管理节点使用命令docker node ls查看

1.3、向docker swarm集群上添加工作节点

a)启动其余两台工作节点并执行如下命令:

docker swarm join --token SWMTKN-1-4yi395mvp9wmi1jcfjas0rzl3t5d1hm84z4yla165fbonaxjzn-0tnvsw84tgp7dtugeeyg8tzem 192.168.159.143:2377

注:--token后的参数自己生成每个人不一样

b)再次查看集群节点信息,操作命令如下:

docker node ls

Docker的使用(五:Docker中的网络与数据管理)_第14张图片

1.4、向Docker Swarm,操作指令如下:

docker service create --replicas 1 --name helloworld alpine ping docer.com

Docker的使用(五:Docker中的网络与数据管理)_第15张图片

1.5、查看Docker Swarm集群的服务

a)使用命令docker service ls查看当前集群中的服务列表,操作指令如下:

b)查看部署的服务具体详情,指令操作如下:

Docker的使用(五:Docker中的网络与数据管理)_第16张图片

c)查看运行和分配情况,操作指令如下:

1.6、更改docker swarm集群服务副本数量

docekr scale helloworld=5

Docker的使用(五:Docker中的网络与数据管理)_第17张图片

  • 查看服务副本情况

Docker的使用(五:Docker中的网络与数据管理)_第18张图片

1.7、删除服务

对于不需要的服务,进行删除,会返回服务名称,操作指令如下:

docker service rm helloworld

1.8、访问服务

注:前面部署的服务都没有直接向外界暴露服务端口,外界也无法正常访问服务。以下就通过自定义overlay驱动网络为例来讲解集群下的网络管理与服务访问;

a)在管理节点上执行命令 docker network ls 查看网络列表

Docker的使用(五:Docker中的网络与数据管理)_第19张图片

b)在管理节点上创建overlay的自定义网络。

docker network create \
--driver overlay \
my-multi-host-network

Docker的使用(五:Docker中的网络与数据管理)_第20张图片

c)在集群管理节点上,再次部署。

docker service create \
--network my-multi-host-network \
--name my-web \
--publish 8080:80 \
--replicas 2 \
nginx

总结:此处拉取镜像可能会失败,或者持续卡主,解决方法就是,给Docker中配置加速器

解决方案可以看此博文https://blog.csdn.net/qq_37823605/article/details/90666773

d)使用命令 docker service ps my-web 查看服务副本运行情况

Docker的使用(五:Docker中的网络与数据管理)_第21张图片

e)外界访问验证

注:打开浏览器使用任意一台机器节点“IP+8080”进行服务访问

Docker的使用(五:Docker中的网络与数据管理)_第22张图片Docker的使用(五:Docker中的网络与数据管理)_第23张图片Docker的使用(五:Docker中的网络与数据管理)_第24张图片

 

任务三、Volumes数据卷管理

1、创建并管理数据卷

1.1、创建数据卷

注:通过 docker volume create my-vol 指令创建一个名为my-vol的数据卷,操作如下:

1.2、查看数据卷

注:通过 docker volume ls 指令查看本地数据卷列表,操作如下:

Docker的使用(五:Docker中的网络与数据管理)_第25张图片

1.3、核查数据卷

注:通过 docker volume inspect my-vol 指令查看指定数据卷列表,操作如下:

Docker的使用(五:Docker中的网络与数据管理)_第26张图片

1.4、删除数据卷

注:当不再需要使用数据卷后,可以使用docker volume rn 指令删除指定名称数据卷,操作如下:

2、启动容器并加载数据卷

2.1、查看本机容器和数据卷

  • 使用指令 docker pa -a 查看

  • 使用指令 docker volume ls查看

Docker的使用(五:Docker中的网络与数据管理)_第27张图片

2.2、确认本机docker文件系统中的容器和数据卷

注:首先在Docker主机终端中将普通用户切换到root用户中,然后进入“/var/lib/docker”目录,查看信息;

Docker的使用(五:Docker中的网络与数据管理)_第28张图片

2.3、启动容器并挂载数据卷

docker run -d \
-it \
--name devtest \
--mount source=myvol,target=/app \
busybox:latest

Docker的使用(五:Docker中的网络与数据管理)_第29张图片

2.4、再次查看本机容器和数据卷列表

2.5、检查容器详情

注:使用docker inspect 查看容器详情

Docker的使用(五:Docker中的网络与数据管理)_第30张图片

2.6、再次确认本机文件系统中的容器和数据卷

注:首先在Docker主机终端中将普通用户切换到root用户中,然后进入“/var/lib/docker”目录,查看信息;

Docker的使用(五:Docker中的网络与数据管理)_第31张图片Docker的使用(五:Docker中的网络与数据管理)_第32张图片

注:从以上图中可以看出,新建的容器数据卷已自启动生成在本地文件目录中。

 

 

 

 

你可能感兴趣的:(微服务,操作系统)