Docker的使用(五:Docker中的网络与数据管理)
实验环境
三台运行有Ubuntu 16.04 操作系统的虚拟机,并每台主机中已安装docker环境;
学习目标
- docker的网络管理
- docker Swarm集群的使用
- Volume数据卷的使用
实验内容
任务一:Docker网络管理
1、Docker默认网络管理
docker安装时自动创建三种网络。客户端可以通过网络管理指令查看。
sudo docker network ls
下面通过一个示例来演示默认的birdge网络管理方式
(1)创建并启动容器
sudo run -itd --name=networktest ubuntu
(2)使用网络查看指令查看网络详情
sudo docker network inspect bridge
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
(2)使用自定义网络启动容器,操作指令如下:
docker run --network=isolated_nw -itd --name=nwtest busybox
(3)为容器添加网络管理,操作指令如下:
docker network connect bridge nwtest
(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
- 创建一个使用自定义的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命令查看
- 分别查看其余两个容器的地址
4.3、容器通信的测试
- 进入容器1,ping容器4
注:网络通信失败,因为容器在不同网络环境下无法通信。
- 进入到容器2中,使用容器的ip地址链接容器1余容器4的通信测试;
注:通信测试成功
总结:不同容器必须在同一网络环境下通信。默认网络管理的容器可以用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
- 修改主机名,并添加地址映射
- 网络连通性测试
1.2、创建Docker Swarm集群
a)在名为manager1的Docker机器上创建Docker Swarm集群,具体操作指令如下:
docker swarm init --advertise-addr 192.168.159.143
注:生成的指令是用来创建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
1.4、向Docker Swarm,操作指令如下:
docker service create --replicas 1 --name helloworld alpine ping docer.com
1.5、查看Docker Swarm集群的服务
a)使用命令docker service ls查看当前集群中的服务列表,操作指令如下:
b)查看部署的服务具体详情,指令操作如下:
c)查看运行和分配情况,操作指令如下:
1.6、更改docker swarm集群服务副本数量
docekr scale helloworld=5
- 查看服务副本情况
1.7、删除服务
对于不需要的服务,进行删除,会返回服务名称,操作指令如下:
docker service rm helloworld
1.8、访问服务
注:前面部署的服务都没有直接向外界暴露服务端口,外界也无法正常访问服务。以下就通过自定义overlay驱动网络为例来讲解集群下的网络管理与服务访问;
a)在管理节点上执行命令 docker network ls 查看网络列表
b)在管理节点上创建overlay的自定义网络。
docker network create \
--driver overlay \
my-multi-host-network
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 查看服务副本运行情况
e)外界访问验证
注:打开浏览器使用任意一台机器节点“IP+8080”进行服务访问
任务三、Volumes数据卷管理
1、创建并管理数据卷
1.1、创建数据卷
注:通过 docker volume create my-vol 指令创建一个名为my-vol的数据卷,操作如下:
1.2、查看数据卷
注:通过 docker volume ls 指令查看本地数据卷列表,操作如下:
1.3、核查数据卷
注:通过 docker volume inspect my-vol 指令查看指定数据卷列表,操作如下:
1.4、删除数据卷
注:当不再需要使用数据卷后,可以使用docker volume rn 指令删除指定名称数据卷,操作如下:
2、启动容器并加载数据卷
2.1、查看本机容器和数据卷
- 使用指令 docker pa -a 查看
- 使用指令 docker volume ls查看
2.2、确认本机docker文件系统中的容器和数据卷
注:首先在Docker主机终端中将普通用户切换到root用户中,然后进入“/var/lib/docker”目录,查看信息;
2.3、启动容器并挂载数据卷
docker run -d \
-it \
--name devtest \
--mount source=myvol,target=/app \
busybox:latest
2.4、再次查看本机容器和数据卷列表
2.5、检查容器详情
注:使用docker inspect 查看容器详情
2.6、再次确认本机文件系统中的容器和数据卷
注:首先在Docker主机终端中将普通用户切换到root用户中,然后进入“/var/lib/docker”目录,查看信息;
注:从以上图中可以看出,新建的容器数据卷已自启动生成在本地文件目录中。
上一篇: linux常用命令(持续更新...)
下一篇: Linux 下命令行修改 IP 地址
推荐阅读
-
详解Docker中VLAN网络模式的配置
-
Docker使用过程中的一些注意事项
-
Docker中镜像构建文件Dockerfile与相关命令的详细介绍
-
ASP.NET Core 3.0 : 二十八. 在Docker中的部署以及docker-compose的使用
-
使用phpstorm对docker中的脚本进行debug的方法
-
03 .NET CORE 2.2 使用OCELOT -- Docker中的Consul
-
[Linux]Linux 下的 Docker 安装与使用
-
JS中LocalStorage与SessionStorage五种循序渐进的使用方法
-
MacBookPro下docker的安装与使用教程
-
Docker的使用初探(二):Docker与.NET Core的结合