Gateway网关
搭载简单网关
网关搭建步骤:
1.创建项目,引入nacos服务发现和gateway依赖
2.配置applicationyml,包括服务基本信息、nacos地址、路由
路由配置包括
1.路由id:路由的唯一标示
2.路由目标 (uri):路由的目标地址,http代表固定地址,lb代表根
据服务名负载均衡
路由断言 (predicates):判断路由的规则
Docker实用篇
0.学习目标
1.初识Docker
1.1.什么是Docker
微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。
- 分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。
- 在数百上千台服务中重复部署,环境不一定一致,会遇到各种问题
1、 Docker如何解决大型项目依赖关系复杂,不同组件依赖的兼容性问题?
Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像Docker应用运行在容器中,使用沙箱机制,相互隔离
2、Docker如何解决开发、测试、生产环境有差异的问题
Docker镜像中包含完整运行环境,包括系统函数库,仅依赖系统的Linux内核,因此可以在任意Linux操作系统上运行
Docker是一个快速交付应用、运行应用的技术:
1.可以将程序及其依赖、运行环境一起打包为一个镜像可以迁移到任意Linux操作系统
2.运行时利用沙箱机制形成隔离容器,各个应用互不干扰
3.启动、移除都可以通过一行命令完成,方便快捷
与虚拟机的区别
docker架构
镜像:将应用程序及其依赖、环境、配置打包在一起容器:
镜像运行起来就是容器,一个镜像可以运行多个容器Docker结构:
服务端:接收命令或远程请求,操作镜像或容器
客户端:发送命令或者请求到Docker服务端
**DockerHub:**一个镜像托管的服务器,类似的还有阿里云镜像服务,统称为DockerRegistry
docker的常用命令
docker命令
dockerrun命令的常见参数有哪些?
–name:指定容器名称
-p:指定端口映射
-d:让容器后台运行查看容器日志的命令
docker logs
添加-f 参数可以持续查看日志查看容器状态
docker ps
查看容器状态:
docker ps
添加-a参数查看所有状态的容器删除容器:
docker rm
不能制除运行中的容器,除非添加- f 参数进入容器:
命令是docker exec-i[容器名][要执行的命令]exec命令可以进入容器修改文件,但是在容器内修改文件是不推荐的
docker数据卷
数据卷挂载方式:
-v volumeName: /targetContainerPath
如果容器运行时volume不存在,会自动被创建出来
1.docker run的命令中通过 -v 参数挂载文件或目录到容器中:
-v volume名称:容器内目录
-v 宿主机文件:容器内文件
-v 宿主机目录:容器内目录
2.数据卷挂载与目录直接挂载的
数据卷挂载耦合度低,由docker来管理目录,但是目录较深,不好找
docker volume create html
docker run --name mn -p 80:80 -v html:/usr/share/nginx/htm1 -d nginx
docker run \
--name mysql \
-e MYSQL_ROOT_PASSWORD=123 \
-p 3306:3336 \
-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
-v /tmp/mysg1/data:/var/1ib/mysql \
-d \
mysq1:5.7.25
镜像结构
镜像是分层结构,每一层称为一个Layer
Baselmage层:包含基本的系统函数库、环境变量、文件系统
Entrypoint: 口,是镜像中应用启动的命令
其它:在Baselmage基础上添加依赖、安装程序、完成整个应用的安装和配置
dockerfiler镜像构建
1.Dockerfile的本质是一个文件,通过指令描述镜像的构建过程
2.Dockerfile的第一行必须是FROM,从一个基础镜像来构建
3.基础镜像可以是基本操作系统,如Ubuntu。也可以是其他人制作好的镜像,例如: java:8-alpine
自定义镜像-Dockerfile
集群的构建和快速部署
docker部署微服务
这个是微服务的Dockerfile文件,也就是构建和部署流程
user-service
FROM java:8-alpine
COPY ./app.jar /tmp/app.jar
ENTRYPOINT java -jar /tmp/app.jar
这个是整体Dockerfile
version: "3.2"
services:
nacos:
image: nacos/nacos-server
environment:
MODE: standalone
ports:
- "8848:8848"
mysql:
image: mysql:5.7.25
environment:
MYSQL_ROOT_PASSWORD: 123
volumes:
- "$PWD/mysql/data:/var/lib/mysql"
- "$PWD/mysql/conf:/etc/mysql/conf.d/"
userservice:
build: ./user-service
orderservice:
build: ./order-service
gateway:
build: ./gateway
ports:
- "10010:10010"
查询微服务日志
docker-compose logs -f gateway
查看docker的日志
docker-compose logs -f
微服务重新启动
docker-compose restart gateway userservice orderservice
根据dockerfile构建并执行微服务(down停止并删除)
docker-compose up -d
Docker镜像仓库
常见镜像仓库服务
镜像仓库( Docker Registry )有公共的和私有的两种形式:
1、公共仓库:例如Docker官方的 Docker Hub,国内也有一些云服务商提供类似于Docker Hub 的公开服务,比如网易云镜像服务、DaoCloud 镜像服务、阿里云镜像服务等。
2、除了使用公开仓库外,用户还可以在本地搭建私有 Docker Registry。企业自己的镜像最好是采用私有DockerRegistry来实现。
1.推送本地镜像到仓库前都必须重命名(docker tag)镜像,以镜像仓库地址为前缀
2.镜像仓库推送前需要把仓库地址配置到docker服务的daemon.json文件中,被docker信任
3.推送使用docker push命令
4.拉取使用docker pull命令