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 busyboxsudo 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”目录,查看信息;
注:从以上图中可以看出,新建的容器数据卷已自启动生成在本地文件目录中。
Docker的使用(五:Docker中的网络与数据管理)相关推荐
- docker学习笔记(五)docker实战
目录 一.搭建MySQL高可用集群(pxc+HA-Proxy) 二.Nginx+Spring Boot+MySQL 一.搭建MySQL高可用集群(pxc+HA-Proxy) 参考链接:https:// ...
- Docker学习:容器五种(3+2)网络模式 | bridge模式 | host模式 | none模式 | container 模式 | 自定义网络模式详解
前言 本讲是从Docker系列讲解课程,单独抽离出来的一个小节,重点介绍容器网络模式, 属于了解范畴,充分了容器的网络模式,更有助于更好的理解Docker的容器之间的访问逻辑. 疑问:为什么要了解容器 ...
- docker学习笔记(三)docker中的网络
目录 Linux中的网卡 Network Namespace Docker中的Bridge网络 使用自定义Bridge网络创建容器 Container中的其他网络 Host网络 None网络 Linu ...
- Docker学习笔记五 在测试中使用Docker
2019独角兽企业重金招聘Python工程师标准>>> 5.1 使用Docker测试静态网站(Nginx) 将项目命名为Sample 首先建立构建环境 mkdir sample cd ...
- Docker中的网络详解
本节主要是介绍Docker默认的网络行为,包含创建的默认网络类型以及如何创建用户自定义网络,也会介绍如何在单一主机或者跨主机集群上创建网络的资源需求. 1.默认网络 当你安装了docker,她自动创建 ...
- Docker在英雄联盟游戏中的实践探索(五)
本文讲的是Docker在英雄联盟游戏中的实践探索(五),[编者的话] 这篇博客是Riot的Docker实践系列博客的第五篇,主要讨论了如何从头创建你的Docker镜像. 在以前的帖子中,我们讲解了如何 ...
- Docker学习(五):Docker网络
Docker网络 1. docker network命令 #查看docker网络 docker network ls #帮助命令 docker network --help #创建网络 docker ...
- 【Docker】(五)使用bind mounts修改Docker容器中的Nginx配置文件
1.前言 本系列文章记录了从0开始学习Docker的过程,Docker系列历史文章: (一)基本概念与安装使用 (二)如何使用Docker发布一个SpringBoot服务 (三)使用registry远 ...
- Docker | Docker技术基础梳理(五) - Docker网络管理
Docker | Docker技术基础梳理(五) - Docker网络管理 链接: 原文链接 原文链接: https://gitbook.cn/books/5b8f3c471966b44b00d265 ...
最新文章
- JS中相等运算符 == 隐式转换
- Python的库和资源
- 解决Mac上VSCdoe断点失效问题
- App设计灵感之十二组精美的手机健康监测App设计案例
- 云原生数据仓库AnalyticDB支撑双11,大幅提升分析实时性和用户体验
- 文学系列:《叶之震颤》读书笔记
- python代码解读器_python文章生成器(附源码+讲解)
- Restlet学习资源
- 犀牛插件-插件开发-rhino-插件开发形式
- firefly-rk3288开发板Linux驱动——W25Q32 SPI驱动
- NTP服务器配置(CentOS环境)
- Qt 之 QQ系统表情—实现动态显示效果
- 多线程如何等待所有子线程一起完成任务后再执行主线程
- 小学生体测测试环境怎么填_小学体测在各个学校展开 最新六年级测试项目及评价标准表一览...
- 用泰勒公式编写一个sin函数--C语言
- 批量识别图片文字并存为Excel,几行Python轻松实现!
- Android APP 检测和监听当前USB设备插入拔出以及读取VID/PID
- Ansys workbench分析应用基础(2)
- 第十一章:MATLAB:符号运算(符号与数值,符号矩阵)
- JS中将对象转化为数组
热门文章
- java this final_Java this、final等关键字总结
- pythonfor循环遍历list_为什么for循环可以遍历list:Python中迭代器与生成器
- 使用 fastlane 实现 iOS 持续集成(二)
- Hyperloop 让发布简洁高效
- mysql dba系统学习(19)配置mysql+lvs+keeplived实现Mysql读操作的负载均衡
- String、StringBuffer与StringBuilder之间区别 (转载)
- javascript a 标签打开相对路径,绝对路径
- 【Big Data】HADOOP集群的配置(一)
- php 派生类 数据库连接 单例模式 xhprof实测 高效连接
- 句号一定要划在句子最美的地方