SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈

Docker

我们发现在微服务中有一个令人头疼的问题——部署,用Docker去解决这个部署难题

(一)初识Docker-什么是docker

1、项目部署的问题

在这里插入图片描述

2、Docker

在这里插入图片描述

扔到一台机器上,它们的依赖难道没有干扰吗?不会,docker将打包好的程序放到一个隔离容器去运行,使用沙箱机制,避免互相干扰,之间不可见,这样就解决了混乱依赖的问题
但仅限于同一个操作系统,比如centos和ubuntu

在这里插入图片描述
在这里插入图片描述
那么一个ubuntu上的应用为什么不能在centos上运行呢?
在这里插入图片描述
那针对这个问题,docker干了什么事呢?
在这里插入图片描述
这样,docker就解决了跨系统问题。你可以认为,docker打包好的程序包,可以运行在任何一个linux内核的操作系统

在这里插入图片描述

3、总结

在这里插入图片描述

(二)初识Docker-Docker和虚拟机的差别

1、Docker与虚拟机

上节课我们已经学习了Docker的原理,我们知道Dokcer可以实现一个应用在不同的linux操作系统上去运行和部署
而我们虚拟机也可以达到类似的效果
它们的实现有什么差别呢?
在这里插入图片描述

虚拟机是在一个系统中装了另外的一个系统,所以当应用执行时,它会以为自己在一台真实的电脑上,因此它会先去调用这个内置的操作系统,而它再与我们Hypervisor进行交互,再把信息传递给了我们外部操作系统,外部操作系统再去调用计算机硬件,于是我们的应用执行就完成了。但由于经过了层层传递,因此它的性能相对来讲要差一些
Docker就不同了,我们知道,Docker它的应用在执行时是直接调用操作系统内核的,所以它的执行性能是会比虚拟机性能要好很多的

在这里插入图片描述

2、总结

在这里插入图片描述

docker是一个系统进程:因为直接与操作系统内核进行交互

(三)初识Docker-Docker架构

1、镜像和容器

在这里插入图片描述

镜像就是硬盘中的文件

镜像都是只读的,也就是说容器运行过程中不能往镜像中写东西。可以基于镜像创建容器,容器可以从中读数据但不能写数据。
那么将来mysql容器往哪里写数据data呢?只要拷贝一份文件到自己的独立文件系统中,这就是隔离的一个特性。这样在自己的空间里写,不会对别的容器产生影响,也不会对镜像产生影响。包括将来记日志logs也是如此
只有这样,我们的镜像才能放心大胆的交给别人去使用,因为这样镜像不会被干扰也不会被影响

那么Docker如何共享给别人去使用呢?

2、Docker和DockerHub

在这里插入图片描述

那么我们该如何利用Docker完成镜像构建或者是从远端拉取镜像呢?又该如何去运行容器呢?这就需要了解Docker的架构了

3、docker架构

在这里插入图片描述

客户端:如果就在本地来发,用“命令”就可以了,如果将来是远程操作docker,就用restapi发

比如我们这里就是本地发,docker build,docker pull,docker run

一般nginx、mysql这种建议直接从官方拉取,只有一些我们自己的微服务或者自己需要去做一些深度定制,才需要构建
因此我们一般使用docker,主要就是向docker server发命令,得到镜像

4、总结

在这里插入图片描述

(四)初识Docker-Docker的安装

1、安装docker

在这里插入图片描述
在这里插入图片描述
macos m1上安装Docker直接在官网或者homebrew下载即可,然后在偏好配置中更换国内镜像源

(五)使用Docker-镜像命令

1、镜像相关命令

在这里插入图片描述

2、镜像操作命令

在这里插入图片描述
docker images --help

3、从DockerHub中拉取一个nginx镜像并查看

在这里插入图片描述

docker pull nginx

在这里插入图片描述

4、利用docker save将nginx镜像导出磁盘,然后再通过load加载回来

在这里插入图片描述
在这里插入图片描述

这个nginx.tar文件不存在,将来它会自动创建

以上说明我们导出成功了

那接下来我们还要演示导入

首先把本地的这个镜像删除
在这里插入图片描述
在这里插入图片描述
然后通过docker images查看发现已经没有了

接下来我们通过load来加载这个nginx.tar文件

在这里插入图片描述
在这里插入图片描述

5、总结

在这里插入图片描述

(七)使用Docker-容器命令介绍

1、容器相关命令

怎么样基于镜像去创建容器,完成容器的各种操作

在这里插入图片描述

docker run 不仅可以创建容器,而且还可以让容器处于运行状态

(八)使用Docker-容器命令案例1

1、案例:创建运行一个Nginx容器

在这里插入图片描述

端口映射的作用:把本来给外界完全隔离开来的容器开一个小窗口,让你透过它来访问

容器端口往往取决于这个应用本身,一般不会变,像这个nginx一般都是80。可变的是宿主机端口

如果想访问容器,应该访问容器所在的那台服务器
在这里插入图片描述
查看本机ip地址:ifconfig 找到 en0后,如果是iPv4就找 inet

run后返回的一长串字符串就是容器的id,全局唯一,起到标识的作用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
-f 持续跟踪日志

ctrl+c停止输出日志

2、总结

在这里插入图片描述

(九)使用Docker-容器命令案例2

1、案例:进入Nginx容器,修改HTML文件内容,添加“传智教育欢迎您“

那么如何进入到容器内部,修改文件呢?
在这里插入图片描述
在这里插入图片描述

容器的内部其实有一套自己的文件系统
它看起来好像跟linux系统的目录一样,但其实它是一个阉割版

我们现在要找nginx在哪个目录:dockerhub上找
在这里插入图片描述

在这里插入图片描述
index.html就是我们要修改的首页了

在这里插入图片描述

vi不成功:镜像封装时只是应用程序所需要的必备的函数库

那么我们如何修改文件呢?

在这里插入图片描述
utf-8,来支持中文

在这里插入图片描述
在这里插入图片描述
通过 exit 从容器中退出;然后停掉这个容器 docker stop mn
在这里插入图片描述
注意 docker ps 默认只能查看运行容器
在这里插入图片描述
这就是为什么我们ps没有看到这个挂掉了的容器的原因,除非我们加上 -a
在这里插入图片描述
如果我们想再启动,docker start mn
在这里插入图片描述
然后再删除这个容器

在这里插入图片描述

2、总结

在这里插入图片描述

(十一)使用Docker-数据卷命令

1、数据卷

docker容器中所有的数据、文件都是和容器耦合在一起的,因此给我们带来很多问题

在这里插入图片描述
在这里插入图片描述

比方说,我现在在这个容器的html目录里写了点东西,那么这些东西会立即写到宿主机文件系统里;而反过来,如果说我在宿主机文件系统里对html文件夹中的某一个文件进行修改,那么这种修改也立即会反映到容器内的这个目录里去

又创建了一个新的容器,我希望它的配置能够共享过来,怎么办呢?我可以让新的这个容器的conf目录也来挂载conf数据卷,也就是说,两个容器可以挂在同一个卷上。这个时候,原来在conf目录中做的一切修改,这个新的容器也能看到

容器删了,数据卷不会跟着删。将来,再来一个新的容器,只要接着挂载在这两个数据卷上,就可以共享以前旧的数据

2、操作数据卷

在这里插入图片描述

3、案例:创建一个数据卷,并查看数据卷在宿主机的目录位置

在这里插入图片描述

在这里插入图片描述

4、总结

在这里插入图片描述

(十二)使用Docker-数据卷挂载案例1

(十三)使用Docker-数据卷挂载案例2

(十四)自定义镜像-镜像结构

(十五)自定义镜像-Dockerfile

(十六)DockerCompose-初始化Compose

(十七)DockerCompose-部署微服务集群

(十八)Docker镜像仓库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/16542.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

组合导航卡尔曼滤波几个杂项

1.组合导航卡尔曼滤波噪声协方差矩阵调参 在组合导航卡尔曼滤波算法中,主要涉及两个噪声协方差矩阵,过程噪声协方差矩阵Q,测量噪声协方差矩阵R,具体来说: R表示测量噪声协方差,它是一个数值,这…

低代码平台很赞,用2个小时,搭出1套应用

最近低代码很火,到处都是低代码的尝试贴,笔者今天也决定深入体验一下,感受它的便捷程度。 在案例开始之前,我们先来聊聊概念。 一、低代码 低代码实质上并不是一个新颖的话题,也不是最近才有的技术突破和创新&#xf…

【全年汇总】2023年CCF软件工程/系统软件/程序设计语言会议截稿时间汇总(持续更新)

本博文是根据CCF会议推荐的软件工程/系统软件/程序设计语言领域相关会议目录撰写。 一、截稿时间总览 截稿时间的总时间轴内容将会持续更新...... 往年投稿及录用情况及链接详见图片后面的内容。 二、会议详细目录 由于一些会议的投稿时间还没公开,因此根据往年投稿…

gRPC结合vcpkg在x64-windows平台visual studio2019 cmake工程里面的应用

这里我们运用vcpkg去下载安装gRPC,进入vcpkg目录后,执行命令:.\vcpkg.exe install grpc:x64-windows grpc在vcpkg里面安装完成后,我们就来使用grpc做一个简单的例子。 gRPC顾名思义,就是google的RPC方案,…

4月23日作业

#include <iostream> #include <cstring> using namespace std; class Student //学生类 { private: string name; //姓名 int year; //年龄 double sorce; //分数 public: Student (){} //无参构造 Student(string a,int b,double c):name(a),y…

元宇宙营销策略、玩法与案例

“元宇宙”依旧是当下品牌创新营销的重要形式&#xff0c;从时趣的行业观察来看&#xff0c;大量品牌方都有着元宇宙的营销意向&#xff0c;但在营销落地上存在不同的进度。一个显而易见的事实是&#xff0c;元宇宙不仅仅是一个虚拟的游戏空间&#xff0c;更是一个未来人人都会…

Java 抽象类和接口

一、抽象类和接口定义和使用场景 当你需要设计一些类&#xff0c;这些类有一些属性和方法是可以共享的&#xff0c;但同时又有一些属性和方法是需要不同的。在这种情况下&#xff0c;Java中提供了两种不同的机制&#xff0c;即“抽象类”和“接口”。 抽象类是一个类&#xff0…

第二十一章 光源

光源是每个场景必不可少的部分&#xff0c;光源除了能够照亮场景之外&#xff0c;还可以产生阴影效果。 Unity中分为四种光源类型&#xff1a; 1. 方向光&#xff1a;Directional Light 用于模拟太阳光&#xff0c;方向光任何地方都能照射到。 2. 点光源&#xff1a;Point L…

Java面试题总结 | Java面试题总结9- RabbitMQ模块(持续更新)

RabbitMQ 文章目录 RabbitMQ为什么使用Rabbitmq而不是其他的消息队列为什么使用消息队列解耦异步削峰 消息队列有什么优缺点MQ的高可用保障单机模式 普通集群模式&#xff08;无高可用性&#xff09;镜像集群模式&#xff08;高可用性&#xff09; MQ如何保证不重复消费、幂等性…

浏览器安全之XSS跨站脚本

基本概念 跨站脚本&#xff08;Cross-Site Scripting&#xff0c;XSS&#xff09;是一种经常出现在Web应用程序中的计算机安全漏洞&#xff0c;是由于Web应用程序对用户的输入过滤不足而产生的。 攻击者利用网站漏洞把恶意的脚本代码&#xff08;通常包括HTML代码和客户端Javas…

Vue.js 框架能力的官方认证

这两天Vue官方推出了Vue.js 认证计划。 即框架能力官方认证&#xff0c;即 Vue.js 框架能力证书。该认证由 Vue School 与 Vue.js 团队合作提供支持。官网&#xff1a;Vue.js - Official Certification Program 官方介绍此次的试题集和代码挑战由 Vue.js 核心团队审核&#xff…

react之按钮鉴权

使用HOC来完成 HOC&#xff1a;高阶组件&#xff0c;是React中复用组件逻辑的一种高级技巧。HOC自身不是React API的一部分&#xff0c;他是一种基于React的组合特性而形成的设计模式。 作用&#xff1a;用于复用组件的业务逻辑 VUE mixinReact Hoc 用户数据渲染带操作按钮渲…

Shell快速入门笔记

文章目录 Shell 快速入门笔记1、Shell概述2、Shell初体验4、注释5、变量6、数据类型6.1 字符串6.2 数组 7、参数传递8、运算符9、常用命令9.1 echo命令9.2 printf命令9.3 test命令 10、流程控制10.1 条件判断10.2 循环 11、函数12、输入/输出重定向12.0 前置知识12.1 输出重定向…

IPsec中IKE与ISAKMP过程分析(主模式-消息3)

IPsec中IKE与ISAKMP过程分析&#xff08;主模式-消息1&#xff09;_搞搞搞高傲的博客-CSDN博客 IPsec中IKE与ISAKMP过程分析&#xff08;主模式-消息2&#xff09;_搞搞搞高傲的博客-CSDN博客 阶段目标过程消息IKE第一阶段建立一个ISAKMP SA实现通信双发的身份鉴别和密钥交换&…

一文详细介绍查看和启用nginx日志(access.log和error.log),nginx错误日志的安全级别,自定义访问日志中的格式

文章目录 1. 文章引言2. Nginx访问日志(access.log)2.1 简述访问日志2.2 启用Nginx访问日志2.3 自定义访问日志中的格式 3. Nginx错误日志(error.log)3.1 简述错误日志3.2 启用错误日志3.3 Nginx错误日志的安全级别 4. 文末总结 1. 文章引言 我们在实际工作中&#xff0c;经常使…

数字设计小思 - D触发器与死缠烂打的亚稳态

前言 本系列整理数字系统设计的相关知识体系架构&#xff0c;为了方便后续自己查阅与求职准备。在FPGA和ASIC设计中&#xff0c;D触发器是最常用的器件&#xff0c;也可以说是时序逻辑的核心&#xff0c;本文根据个人的思考历程结合相关书籍内容和网上文章&#xff0c;聊一聊D…

函数-函数递归及练习

目录 1、什么是递归&#xff1f; 2、递归的两个必要条件 3、递归的练习 3.1 接受一个整型值&#xff08;无符号&#xff09;&#xff0c;按照顺序打印它的每一位 3.2 编写函数不允许创建临时变量&#xff0c;求字符串的长度 3.3 求第n个斐波那契数 3.4 字符串逆序&…

Go语言-数据结构与算法

go语言之专业数据结构与算法 20.4 稀疏 sparsearray 数组 20.4.1 先看一个实际的需求  编写的五子棋程序中&#xff0c;有存盘退出和续上盘的功能 稀疏数组的处理方法是 : 1) 记录数组一共有几行几列&#xff0c;有多少个不同的值 2) 思想&#xff1a;把具有不同值…

【五一创作】【Midjourney】Midjourney 连续性人物创作 ② ( 获取大图和 Seed 随机种子 | 通过 seed 随机种子生成类似图像 )

文章目录 一、获取大图和 Seed 随机种子二、通过 seed 种子生成类似图像 一、获取大图和 Seed 随机种子 注意 : 一定是使用 U 按钮 , 在生成的大图的基础上 , 添加 信封 表情 , 才能获取该大图的 Seed 种子编码 ; 在上一篇博客生成图像的基础上 , 点击 U3 获取第三张图的大图 ;…

STL常用梳理——VECTOR常用接口及其迭代器实现

Vector篇 Vector介绍Vector实现1、定义默认构造函数使用实现 2、迭代器Iterator迭代器使用 3、空间增长问题使用实现 迭代器迭代器介绍迭代器实现 Vector介绍 vector是STL中容器之一&#xff0c;特性如下&#xff1a; vector是表示可变大小数组的序列容器。就像数组一样&#…