实验环境

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

学习目标

  1. docker的网络管理
  2. docker Swarm集群的使用
  3. 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中的网络与数据管理)相关推荐

  1. docker学习笔记(五)docker实战

    目录 一.搭建MySQL高可用集群(pxc+HA-Proxy) 二.Nginx+Spring Boot+MySQL 一.搭建MySQL高可用集群(pxc+HA-Proxy) 参考链接:https:// ...

  2. Docker学习:容器五种(3+2)网络模式 | bridge模式 | host模式 | none模式 | container 模式 | 自定义网络模式详解

    前言 本讲是从Docker系列讲解课程,单独抽离出来的一个小节,重点介绍容器网络模式, 属于了解范畴,充分了容器的网络模式,更有助于更好的理解Docker的容器之间的访问逻辑. 疑问:为什么要了解容器 ...

  3. docker学习笔记(三)docker中的网络

    目录 Linux中的网卡 Network Namespace Docker中的Bridge网络 使用自定义Bridge网络创建容器 Container中的其他网络 Host网络 None网络 Linu ...

  4. Docker学习笔记五 在测试中使用Docker

    2019独角兽企业重金招聘Python工程师标准>>> 5.1 使用Docker测试静态网站(Nginx) 将项目命名为Sample 首先建立构建环境 mkdir sample cd ...

  5. Docker中的网络详解

    本节主要是介绍Docker默认的网络行为,包含创建的默认网络类型以及如何创建用户自定义网络,也会介绍如何在单一主机或者跨主机集群上创建网络的资源需求. 1.默认网络 当你安装了docker,她自动创建 ...

  6. Docker在英雄联盟游戏中的实践探索(五)

    本文讲的是Docker在英雄联盟游戏中的实践探索(五),[编者的话] 这篇博客是Riot的Docker实践系列博客的第五篇,主要讨论了如何从头创建你的Docker镜像. 在以前的帖子中,我们讲解了如何 ...

  7. Docker学习(五):Docker网络

    Docker网络 1. docker network命令 #查看docker网络 docker network ls #帮助命令 docker network --help #创建网络 docker ...

  8. 【Docker】(五)使用bind mounts修改Docker容器中的Nginx配置文件

    1.前言 本系列文章记录了从0开始学习Docker的过程,Docker系列历史文章: (一)基本概念与安装使用 (二)如何使用Docker发布一个SpringBoot服务 (三)使用registry远 ...

  9. Docker | Docker技术基础梳理(五) - Docker网络管理

    Docker | Docker技术基础梳理(五) - Docker网络管理 链接: 原文链接 原文链接: https://gitbook.cn/books/5b8f3c471966b44b00d265 ...

最新文章

  1. JS中相等运算符 == 隐式转换
  2. Python的库和资源
  3. 解决Mac上VSCdoe断点失效问题
  4. App设计灵感之十二组精美的手机健康监测App设计案例
  5. 云原生数据仓库AnalyticDB支撑双11,大幅提升分析实时性和用户体验
  6. 文学系列:《叶之震颤》读书笔记
  7. python代码解读器_python文章生成器(附源码+讲解)
  8. Restlet学习资源
  9. 犀牛插件-插件开发-rhino-插件开发形式
  10. firefly-rk3288开发板Linux驱动——W25Q32 SPI驱动
  11. NTP服务器配置(CentOS环境)
  12. Qt 之 QQ系统表情—实现动态显示效果
  13. 多线程如何等待所有子线程一起完成任务后再执行主线程
  14. 小学生体测测试环境怎么填_小学体测在各个学校展开 最新六年级测试项目及评价标准表一览...
  15. 用泰勒公式编写一个sin函数--C语言
  16. 批量识别图片文字并存为Excel,几行Python轻松实现!
  17. Android APP 检测和监听当前USB设备插入拔出以及读取VID/PID
  18. Ansys workbench分析应用基础(2)
  19. 第十一章:MATLAB:符号运算(符号与数值,符号矩阵)
  20. JS中将对象转化为数组

热门文章

  1. java this final_Java this、final等关键字总结
  2. pythonfor循环遍历list_为什么for循环可以遍历list:Python中迭代器与生成器
  3. 使用 fastlane 实现 iOS 持续集成(二)
  4. Hyperloop 让发布简洁高效
  5. mysql dba系统学习(19)配置mysql+lvs+keeplived实现Mysql读操作的负载均衡
  6. String、StringBuffer与StringBuilder之间区别 (转载)
  7. javascript a 标签打开相对路径,绝对路径
  8. 【Big Data】HADOOP集群的配置(一)
  9. php 派生类 数据库连接 单例模式 xhprof实测 高效连接
  10. 句号一定要划在句子最美的地方