当前位置: 首页 > 编程日记 > 正文

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

实验环境

三台运行有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”目录,查看信息;

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

相关文章:

Java中单元测试中:@BeforeClass,@Before,@Test,@After,@AfterClass中的问题详解

在Junit4中还有的测试注解有: BeforeClass ,Before,Test,After,AfterClass 1、其中:BeforeClass,AfterClass是Junit4中新添加进去的 2、如果Run as --->Junit Test,运行含有Test…

iOS开发流程总结

本文由社区会员umyueyue分享 以下是会员umyueue总结的iOS开发流程以及学习中的资料分享。 流程:注册、开发、真机测试、发布以及上线。 iPhone iOS 4从注册到app上线开发流程 http://blog.csdn.net/linzhiji/article/details/6732868 一、关于注册账号IDP和Apple ID…

(2)iOS用UICollectionView实现Gallery效果

本文主要实现: (1)用UICollectionView显示一组图片 (2)左右滑动来浏览所有图片 (3)图片自动对齐到网格(即滑动停止后中间的图片对齐到正中位置) (4&#…

Docker的使用(docker pull拉取镜像失败问题解决)

在docker拉取Nginx镜像过程中,速度慢,或者不成功 报错代码: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting hea…

java,js,jstl,EL的简单交互

EL全名Expression Language.EL提供了在JSP脚本编制元素范围外使用运行时表达式的功能。 脚本编制元素是指页面中能够用于在JSP文件中嵌入java代码的元素。 JSP标准标记库(jsp staandard tag library,jstl)是一个实现web应用程序常用功能的定制…

iOS UICollectionView实现瀑布流(3)

前面两篇Blog简单的介绍了UICollection的基本使用并实现了类似Android的Gallery效果,这篇文章使用UICollection来实现瀑布流效果,代码主要是在极客学院Carol老师的视频,并在提供的demo下直接修改代码,进行屏幕适配,最终…

LevelDb系列之简介

说起LevelDb也许您不清楚,但是如果作为IT工程师,不知道下面两位大神级别的工程师,那您的领导估计会Hold不住了:Jeff Dean和Sanjay Ghemawat。这两位是Google公司重量级的工程师,为数甚少的Google Fellow之二。 Jeff De…

Spark集群启动时worker节点启不起来

在spark集群中使用命令: sbin/start-all.sh 启动集群时报错: starting org.apache.spark.deploy.master.Master, logging to /home/yxk/cluster/spark/logs/spark-yxk-org.apache.spark.deploy.master.Master-1-linux.out yxklinuxs password: linux:…

XML xmlns

xmlns xml namespaces 参考 http://www.w3school.com.cn/tags/tag_prop_xmlns.asp http://www.w3school.com.cn/xml/xml_namespaces.asp <table><tr>这是一行</tr> </table><table><material>黄花梨</material> </table> 放到…

StarlingMVC简介,原理解说及示例源码

StarlingMVC简介 StarlingMVC是一个为使用Starling来开发游戏的MVC框架。这个框架的特性方面&#xff0c;很像Swiz和RobotLegs&#xff0c;原理亦像Mate。其特性列表如下&#xff1a; 依赖注入(DI)/控制反转(IOC)视图代理(View Mediation)事件捕获(Event Handling)非侵入性框架…

iOS调用系统相机文字改为中文

只要把这里改成China&#xff1a;

微服务项目的整合与测试

实验目的 掌握微服务项目的整合使用 掌握Swagger-UI的简单使用 练习内容 1、微服务项目整合 1.1、项目预览 1.1.1、在 https://github.com/shi469391tou/microservice-mallmanagement.git 地址下载&#xff0c;并导入Myeclipse中&#xff1b; 1.1.2、查看项目的结构 1.2、…

mysql单表多timestamp的current_timestamp设置问题

一个表中出现多个timestamp并设置其中一个为current_timestamp的时候经常会遇到 1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause 原因是当你给一个timestamp设置为on update current_time…

iOS 关于Blocks

*本文参考了《Objective-C高级编程 iOS与OSX多线程和内存管理》一书&#xff0c;关于Block的介绍摘取自此书。 Objective-c 语言中Block语法格式为&#xff1a; 返回值类型 参数列表 表达式 c语言中的函数语法格式为 返回值类型 函数方法名 参数列表 表达式 从上面的…

一步步写STM32 OS【二】环境搭建

一、安装IAR for ARM6.5 二、新建工程 1、选择处理器&#xff1a;STM32F407VG&#xff0c;暂不使用FPU2、必要的路径配置和宏定义3、使用SWO重定向IO输出4、使用ST-LINK仿真器5、下载配置6、设置CPU频率&#xff0c;防止SWO输出乱码三、代码调试 四、工程下载 stepbystep_stm32…

微服务项目的部署

练习目标 掌握Docker Compose编排工具的使用掌握微服务项目与Docker的整合方式掌握微服务项目的部署方式 项目整合参考&#xff1a;https://blog.csdn.net/qq_37823605/article/details/91379272 练习内容 1、Docker Compose编排工具 1.1、Docker Compose的安装与卸载 1.1…

CSS 布局:40个教程、技巧、例子和最佳实践

前言&#xff1a; 布局是WEB开发一个重要的课题&#xff0c;进入XHTML/CSS后&#xff0c;使用TABLE布局的方式逐渐淡出&#xff0c;CSS布局以众多优点成为主流&#xff0c;本文将介绍40个基于CSS的web布局的资源和教程。文章的出处在http://www.noupe.com/css/css-layouts-40-t…

【仿去哪儿登录】UITextField输入时检查输入框是否为空

APP登录时&#xff0c;一般是是等用户输入完账号和密码后才去检查是否为空&#xff0c;而去哪儿登录时&#xff0c;在账号和密码的输入过程中&#xff0c;只要当账号和密码其一为空时&#xff0c;登录按钮立即变成不可用&#xff08;图1&#xff09;&#xff0c;只有账号和密码…

sql排名语句

查询全部 select dwmc,pjdf,row_number() over(order by pjdf desc) as paiming from Sab_hhb_zhb inner join jgdx on jgdx.midSab_hhb_zhb.mid查询单个select paiming from (select mid,pjdf,row_number() over(order by pjdf desc) as paiming from Sab_hhb_zhb ) Sab_hhb_z…

Sqoop的基础应用

实验目的要求 了解ET了工具Sqoop&#xff1b;学会安装配置Sqoop&#xff1b;学会使用数据迁移框架Sqoop&#xff1b;使用Sqoop导入MySQL到HDFS和Hive&#xff1b;使用Sqoop导出HDFS数据到MySQL&#xff1b; 实验环境 Java jdk 1.7&#xff1b;apache-maven-3.6.0&#xff1b;…

hadoop程序MapReduce之SingletonTableJoin

需求&#xff1a;单表关联问题。从文件中孩子和父母的关系挖掘出孙子和爷奶关系 样板&#xff1a;child-parent.txt xiaoming daxiong daxiong alice daxiong jack 输出&#xff1a;xiaoming alice xiaoming jack 分析设计&#xff1a; mapper部分设计&#xff1a; 1、<k1,…

Android网络框架Volley的快速使用

一.基本使用 之前做Android开发都是使用学长自己封装好的网络请求框架&#xff0c;第三方网络框架也很多&#xff0c;网上搜索了一下&#xff0c;大多数人推荐使用 android-async-httpokhttpVolley 其中Volley是Google推出了官方的针对Android平台上的网络通信库&#xff0c;能…

浏览器版本过低

http://study.163.com/common/errors/notSupported.htm <div class"wb f-cb"> <a href"http://www.google.cn/intl/zh-CN/chrome/browser/" class"g f-hide" target"_blank">谷歌浏览器</a> <a href"http:/…

Spark的基础应用

目的要求 搭建Spark集群环境&#xff1b;Spark集群的启动、浏览与关闭&#xff1b;使用Eclipse编写Spark应用程序包&#xff1b;如何运行Spark任务&#xff1b; 实验环境 Java jdk 1.7&#xff1b;apache-maven-3.6.0&#xff1b;Eclipse&#xff1b;Apache_Hadoop集群&#…

HDU-2084 数塔 经典dp,水

1、HDU-2084 数塔 2、链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid2084 3、总结&#xff1a;从下往上推&#xff0c;最后归于顶点。方程为 dp[i][j] max(dp[i1][j],dp[i1][j1])a[i][j] #include<iostream> #include<cstring> #include<…

[16] 螺旋面(Spire)图形的生成算法

顶点数据的生成 1 bool YfBuildSpireVertices2 (3 Yreal radius, 4 Yreal assistRadius, 5 Yreal height, 6 Yuint slices,7 Yuint s…

iOS的页面跳转

1.通过NavigationController跳转 这个方式适用于根视图为NavigationController的控制器&#xff0c;首先&#xff0c;在storyboard中给跳转的目标控制器视图设置Identifier&#xff0c;名字自定&#xff0c;我这里直接使用Controller对应的名字&#xff0c;如图1&#xff1a;需…

最新Java面试题答案

JAVA基础 JAVA中的几种基本类型&#xff0c;各占用多少字节&#xff1f; 下图单位是bit,非字节 1B8bit String能被继承吗&#xff1f;为什么&#xff1f; 不可以&#xff0c;因为String类有final修饰符&#xff0c;而final修饰的类是不能被继承的&#xff0c;实现细节不允许改…

fedora装机后要运行的脚本(原创)

脚本:sh.sh 1 #!/bin/zsh2 #安装rpmfusion源3 dnf config-manager --add-repohttp://repo.fdzh.org/FZUG/FZUG.repo4 #安装一下有用的一些软件包5 yum -y install yum-fastestmirror 6 yum -y install unrar7 yum -y install thunderbird8 yum -y install emacs9 yum -y instal…

【Android】FragmentTabHost实现底部Tab菜单选项

以前实现类似微博底部菜单使用的是TabHostActivity来实现&#xff0c;但是使用的时候提醒已经被弃用&#xff0c;现在我们可以通过FragmentTabHostFragment来实现。下面就是demo&#xff1a; 1.main_activity.xml 主布局文件。 <LinearLayout xmlns:android"http://sc…