1.路由过滤器
- 是什么:
- 网关中提供的一种过滤器,对网关的请求和微服务返回的响应做处理
路由过滤器种类: | 称 | 说明 | | —- | —- | | AddRequestHeader | 给当前请求添加一个请求头 | | RemoveRequestHeader | 移除请求中的一个请求头 | | AddResponseHeader | 给响应结果中添加一个响应头 | | RemoveResponseHeader | 从响应结果中移除有一个响应头 | | RequestRateLimiter | 限制请求的流量 |
案例:
- 需求:给所有进入userservice的请求添加一个请求头:Truth=itcast is freaking awesome!
步骤
1.修改gateway服务的application.yml文件,添加路由过滤
spring:cloud:gateway:routes:- id: user-serviceuri: lb://userservicepredicates:- Path=/user/**filters: # 声明过滤器列表,可以是多个- AddRequestHeader=Truth, Itcast is freaking awesome! # 添加请求头
测试
- 在controller中注入请求头信息
默认过滤器
案例
- 需求:定义全局过滤器,拦截请求,判断请求的参数是否满足下面条件
- 参数中是否有authorization,
- authorization参数值是否为admin
- 需求:定义全局过滤器,拦截请求,判断请求的参数是否满足下面条件
如果同时满足则放行,否则拦截
代码实现
/*参数声明:exchange 请求上下文 包含request responsechain:过滤器链@order中的数字越小,优先级越高*/@Order(-1)@Component(让Spring扫描)public class AuthorizeFilter implements GlobalFilter {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {// 1.获取请求参数MultiValueMap<String, String> params = exchange.getRequest().getQueryParams();// 2.获取authorization参数String auth = params.getFirst("authorization");// 3.校验if ("admin".equals(auth)) {// 放行//一定要加returnreturn chain.filter(exchange);}// 4.拦截//不等于admin// 4.1.禁止访问,设置状态码exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);// 4.2.结束处理return exchange.getResponse().setComplete();}}
docker安装和启动
检查状态:
检查docker版本
docker -v
检查docker版本(更详细)
docker version
查看服务端详细信息
docker info
docker服务端管理:
查看docker服务端状态
systemctl status docker
启动docker服务端
systemctl start docker
停止docker服务端
systemctl stop docker
重启docker服务端
systemctl restart docker
开机启动docker服务端
systemctl enable docker
image 镜像操作
查看镜像
docker images centos
查看仓库名称包含centos的镜像
docker images -q
查看镜像列表 只显示id
搜索镜像
docker search 仓库名称关键字
hub.docker.com 官方镜像中心网址搜索(推荐)
拉取镜像
docker pull 仓库名称:标记
省略标记
下载镜像的latest版本
删除镜像
docker rmi 【镜像仓库:标记】或【镜像ID】
强制删除
docker rmi -f 【镜像仓库:标记】或【镜像ID】
删除全部镜像
docker rmi **docker images -q**
container 容器操作
查看容器
docker ps
查看运行时容器列表
docker ps -a
查看所有的容器列表
创建容器
docker run [选项] 镜像:标记 [命令]
选项
-it
交互式运行
运行容器后,会登录到容器中
通过exit退出 退出后容器关闭
-d
守护式运行
后台运行容器
进入容器:
docker exec -it 容器名称 bash
通过exit退出 退出后容器继续运行
—name 名称
定义容器名称
-p 宿主机端口:容器端口
将宿主的端口映射到容器
-v 目录挂载
-v 宿主机上的目录:容器上的目录
停止、启动、重启
docker stop
docker start
docker restart
文件拷贝
docker cp 宿主机上的文件 容器名称:/容器中的目录
docker cp 容器名称:/容器中上的文件 宿主机的目录
目录挂载
docker run -id —name 名称 -v 宿主机目录:容器目录 镜像
删除容器
docker rm 容器
docker rm -f 容器
删除所有容器
docker rm**docker ps -a -q**
查看容器日志
docker logs -f 容器名称(或容器ID)
设置容器自启动
docker update —restart always 容器名称
数据卷管理
数据卷是一个可供一个或多个容器使用的特殊目录,一般是在宿主机的某个特定的目录下
数据卷管理命令
docker volume create 卷名称
创建一个数据卷
docker volume inspect 卷名称
显示一个或多个指定数据卷的详细信息
docker volume ls
查看所有的数据卷
docker volume prune
删除所有未使用的数据卷
docker volume rm 卷名称
删除一个或多个指定的数据卷
演示挂载数据卷
docker volume create html
创建名称为html的数据卷
docker volume inspect html
查看html数据卷的详细信息
docker run -id —name=my-nginx -p 8888:80 -v html:/usr/share/nginx/html nginx
创建并运行nginx容器,并将html数据卷挂载到容器的指定目录
备份与迁移
镜像的备份
docker save -o 文件名称 镜像名称:标记
docker save -o mynginx.tar mynginx
将mynginx镜像保存为一个压缩包
镜像的加载
docker load -i 文件名称
docker load -i mynginx.tar
加载指定压缩包中的镜像
Dockerfile构建镜像
概念:
Dockerfile是一个脚本文件,在里面定义构建镜像的命令和参数
使用docker build命令根据这个脚本文件可以快速构建镜像
docker-compose
容器编排技术<br /> 可以通过一个脚本,描述多个容器,可以实现容器的统一管理和编排<br /> 企业 比较火的容器编排技术** kubernetes (K8S)**<br /> 常用命令:<br /> **docker-compose up -d** 后台启动所有描述的容器<br /> **docker-compose stop ** 停止所有描述的容器<br /> **docker-compose down **停止并删除所有描述的容器
Registry镜像中心
**搭建私有镜像**中心<br /> 拉取注册中心的镜像 Registry<br /> **上传镜像**到私有注册中心<br /> 镜像中心的信任列表<br /> docker tag 注册中心地址/镜像名称:版本<br /> docker push 注册中心地址/镜像名称:版本
