原 使用docker部署微服务应用
docker安装
ubuntu
1. 安装docker
apt install docker.io
apt install docker-compose
2. docker 基本命令
docker images 查看docker镜像
docker rmi 删除镜像
docker ps 查看在运行的dokcer容器(-a 查看所有镜像)
docker rm [容器名字或ID] 删除容器
docker部署单个应用
1. 下载java基础镜像到本地
docker pull java:8
2. 创建镜像的准备工作
将需要发布的springboot应用jar包放在一个文件夹内,并创建一个Dockerfile文件
Dockerfile文件内容如下:
FROM java:8
VOLUME /tmp
ADD demo3-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
EXPOSE 8082
ENTRYPOINT [ "java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar" ]
3. 创建一个镜像,名称是zipkin(命令结尾的'.'表示Dockerfile的位置是在当前文件夹)
docker build -t zipkin .
逐步执行Dockerfile,并创建镜像后,使用docker images 就可以看到创建的镜像zipkinl。
4. 使用镜像运行一个容器
docker run --name 容器名称 -d -p 内部端口:外部端口 镜像名称
dokcer run --name zipkin -d -p 9411:9411 zipkin
稍等片刻,启动完成后就可以访问zipkin.jar提供的服务,如下:
如果需要查看容器zipkin启动时的日志,可以使用命令:
docker logs -f zipkin
容器在运行后可以使用 docker ps 查看
docker run 根据镜像创建并运行了一个容器,如果想运行已有的容器,使用 docker start [容器名或ID],停止运行容器使用 docker stop [容器名或ID] 或 docker kill [容器名或ID]。
至此,一个应用使用docker已经部署完毕,其实就是创建镜像和运行容器两步:创建镜像需要Dockerfile文件和使用的jar包;运行容器需要一个镜像,也可以说容器就是镜像的一个实例。
5. 数据库服务:
mysql
docker pull mysql:5.7
docker run --name docker-mysql -e MYSQL_ROOT_PASSWORD=root -d -p 3306:3306 mysql:5.7
详细参考: https://hub.docker.com/_/mysql/?spm=5176.1972344.1.5.zx87vs
redis
docker pull redis
docker run --name dokcer-redis -d -p 6379:6379 redis
详细参考:https://dev.aliyun.com/detail.html?spm=5176.1971733.2.20.UT2z6d&repoId=1259
192.168.181.129 是ubuntu虚拟机的ip地址,mysql和redis客户端是windows系统的软件,都可以连接成功。
docker-compose部署多个应用
将多个镜像运行
需要有docker-compose.yml或docker-compose.yaml文件,在此路径下运行命令
docker-compose up
docker-compose down
docker-compose
docker-compose.yaml文件
zipkin:
image: zipkin
ports:
- "9411:9411"
demo3:
image: demo3
ports:
- "8082:8082"
links:
- zipkin
详细参考: https://www.jianshu.com/p/2217cfed29d7
- Java基础-06.总结二维数组,面向对象
- 04 整合IDEA+Maven+SSM框架的高并发的商品秒杀项目之高并发优化
- 过滤器第一篇【介绍、入门、简单应用】
- 通过pl/sql来格式化sql(r4笔记第63天)
- 程序员如何写出杀手级的简历
- 过滤器第二篇【编码、敏感词、压缩、转义过滤器】
- JSP第二篇【内置对象的介绍、4种属性范围、应用场景】
- Struts2的配置和一个简单的例子
- 监听器第一篇【基本概念、Servlet各个监听器】
- 监听器第二篇【统计网站人数、自定义session扫描器、踢人小案例】
- 通俗易懂的分析如何用Python实现一只小爬虫,爬取拉勾网的职位信息
- JSP第一篇【JSP介绍、工作原理、生命周期、语法、指令、行为】
- 一条执行时间两天半的sql语句简化(r4笔记第62天)
- 05-01总结方法,数组(一维)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法