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

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

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

实验环境

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

学习目标

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

实验内容

任务一:Docker网络管理

1、Docker默认网络管理

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

sudo docker network ls

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

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

(1)创建并启动容器

sudo run -itd --name=networktest ubuntu

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

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

sudo docker network inspect bridge

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

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中的网络与数据管理)

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

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

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

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

docker network connect bridge nwtest

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

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

docker network disconnect isolated_nw nwtest

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

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

docker network rm isolated_nw 

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

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

4、容器之间的网络通信

4.1、创建容器

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

sudo docker run -itd --name=container2 busybox

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

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

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

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

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

4.2、容器地址查看

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

docker attach container2
  • 使用ifconfig命令查看

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

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

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

4.3、容器通信的测试

  • 进入容器1,ping容器4

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

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

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

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

注:通信测试成功

总结:不同容器必须在同一网络环境下通信。默认网络管理的容器可以用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中的网络与数据管理)

  • 网络连通性测试

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

1.2、创建Docker Swarm集群

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

docker swarm init --advertise-addr 192.168.159.143

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

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

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

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

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

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

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

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

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

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

docker node ls

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

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

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

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

1.5、查看Docker Swarm集群的服务

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

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

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

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

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

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

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

docekr scale helloworld=5

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

  • 查看服务副本情况

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

1.7、删除服务

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

docker service rm helloworld

1.8、访问服务

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

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

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

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

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

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

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

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

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

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

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

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

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

e)外界访问验证

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

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

 

任务三、Volumes数据卷管理

1、创建并管理数据卷

1.1、创建数据卷

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

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

1.2、查看数据卷

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

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

1.3、核查数据卷

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

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

1.4、删除数据卷

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

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

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

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

  • 使用指令 docker pa -a 查看

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

  • 使用指令 docker volume ls查看

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

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

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

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

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

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

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

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

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

2.5、检查容器详情

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

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

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

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

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

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