回顾第二天知识:
今天学习
网关过滤器
网关性质
跨域的配置(前端访问网关)
docker (当微服务太多了,就用这个)
一天开始之上午
Docker对我们程序员来说到底意味着什么??
1、不同版本的环境搭建、搭建一个集群进行测试
2、测试沙盒、容器
统一网关gataway:
路由过滤器GatewayFilter:
前端用户要访问指定微服务需要通过网关,在网关里设置多个过滤器和路由
过滤器的作用是什么??
对路由的请求或响应做加工处理,例如请求头
配置在路由下的过滤器只对当前路由的请求生效
defaultFilters的作用是什么?
对所有路由都生效的过滤器
自定义全局过滤器:
在网关里创建一个类,类上加两个注解:@order(-1)(这只是一个排序的注解),@Component
1、获取请求对象
2、获取请求参数: (路径?authorization&haha)(接收要哟没买过字符串)
3、判断是否等于admin
4、如果等于admin 放行请求(不要忘记加ruturn 这个是放行)
5、不等于admimn 设置状态码,,然后终止请求(返回响应对象(respone))
全局过滤器怎么用???
新建一个类 想对请求头或者响应,一定要放行请求 想要过滤器生效要在过滤器类上加@Component过滤器才会生效
实现全局过滤器的步骤??
1、实现GlobaFilter接口 2、添加@Order注解或实现Ordered接口 3、编写处理逻辑
过滤器执行顺序:
三类过滤器:当前路由过滤器、DefaultFilter、GlobaFilter
1、过滤器类上加@order(-100) {order值越小,前置优先级越高,执行顺序越靠前}
2、当order值一样时,顺序是defaultFilter最先,然后是局部的过滤器,最后是全局过滤器
从网关请求的时候经过过滤器(前置阶段),请求完微服务回来,还得走过滤器(后置阶段)
跨域问题处理:(知道即可)( 网关处理跨域采用的同样是CORS方案 )
域名不一致就是跨域,需要配置跨域资源共享,在yml里面配置
1、golbalos: #全局的跨域处理
2、allowedOrgins: #允许那些网站的跨域请求
3、allowedMethods: #允许的跨域ajax的请求方式
4、allowedHeaders: #允许在请求中携带的信息
5、allowcCredentials: #是否允许携带cookie
6、maxAge:360000 # 这次跨域检测的有效期
spring:
cloud:
gateway:
# 。。。
globalcors: # 全局的跨域处理
add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题
corsConfigurations:
'[/**]':
allowedOrigins: # 允许哪些网站的跨域请求
- "http://localhost:8090"
- "http://www.leyou.com"
allowedMethods: # 允许的跨域ajax的请求方式
- "GET"
- "POST"
- "DELETE"
- "PUT"
- "OPTIONS"
allowedHeaders: "*" # 允许在请求中携带的头信息
allowCredentials: true # 是否允许携带cookie
maxAge: 360000 # 这次跨域检测的有效期
初识Docker:
Docker如何解决依赖、兼容??
1、Docker允许开发中将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包(这就是可移植镜像Image)
2、Docker应用允许在容器中,使用沙箱机制,相互隔离
系统应用 —>内核—> 计算机硬件 (一级连一级)
Docker与虚拟机
分成级别:
计算机包括虚拟机Linux,虚拟机包括Docker,Docker包括redis、mysql、java、xxx等等
服务器中有多个虚拟机(虚拟机隔离性比较强)
Docker模拟的虚拟化,一个系统进程,利用一些手段把这些隔离开来,Docker容器化的部署方案
Docker与虚拟机的差异?
1、docker是一个系统进程;虚拟机是操作系统中的操作系统
2、docker体积小,启动速度快,性能好
Docker三个概念重点:镜像和容器、镜像中心
1、镜像 Image:上面有写 - - -
2、容器 Container:镜像中运行后形成的进程就是容器,Docker会做隔离,外部看不见,一个镜像可以运行多个容器
3、Docker结构 :服务端与客户端
服务端: 接收命令或远程请求,操作镜像或容器
客户端: 发送命令或者请求到Docker服务端
4、DockerRegistry:一个镜像托管的服务器,类似的还有阿里云镜像服务,统称DockerRegistry
一天开始之下午Docker
启动docker前,一定要关闭防火墙!!
# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
通过命令启动docker
systemctl start docker # 启动docker服务
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
systemctl status docker # 检查docker状态
systemctl enable docker # 设置docker服务开机自启
镜像操作基本命令:
docker images: 查看镜像列表
docker rmi:删除镜像 镜像仓库名称:TAG 镜像id id2 id3
docker pull:从镜像中心 拉取镜像 仓库名称:TAG latest(最新版本)
docker push: 推送镜像到镜像中心
docker save: 将镜像保存到压缩包
docker load: 加载压缩包为镜像
容器相关命令:
镜像为一个内存---到----》容器又是一个大内存
docker run:创建并运行一个容器
docker exec: 进入容器执行命令
docker logs:查看容器运行日志
docker ps:查看所有运行的容器及状态
docker stop mn //把mn容器停掉了
docker start mn
docker rm -f mn //暴力删除mn容器
docker rm `docker ps -a -q`//删除全部容器
docker rmi 删除镜像
docker rmi `docker images -q`//删除全部镜像---慎用
docker pause
docker unpause
创建运行一个Nginx容器:
步骤1:去docker hub查看Nginx的容器运行命令
docker run --name mn -d -p 80:80 -d nginx //--name:指定容器名称 -d是后台运行 -p是端口映射
docker exec -it mn bash //exec进入容器中 -it交互运行 bash:Linax的脚本终端
exit //退出
docker ps //查看正在运行的容器
docker ps -a //查看所有状态的容器
docker logs -f mn //查看日志信息 ---重要
redis链接Docker:
1、docker exec -it redis bash // 链接redis
2、 在redis里链接docker的端口号
3、在虚拟机里写:set num 66 //容器里设置一个值 ridis就能得到了
数据卷(volume):是一个虚拟目录,指向宿主机文件系统中的某个文件
docker volume ls //查看数据卷列表
目录挂载
今日重点:突击docker容器操作命令、镜像操作命令
自定义镜像
镜像结构:分层结构,每一层称为一个Layer
入口:Entrypoint:一般是程序启动的脚本和参数
层:Layer:在Baselmage基础上添加安装包、依赖、配置等,每次操作都形成新的一层
基础镜像:Baselmage:应用依赖的系统函数库、环境、配置、文件等