![](https://img2020.cnblogs.com/blog/1355734/202003/1355734-20200331160121395-1758611025.png)
- 1 标准化打包:背后主要由容器镜像技术来实现
- 2 隔离:主要是Linux Cgroups 和 Namespaces技术
- 3 标准化部署:容器在软件应用和操作系统之间引入了一层抽象,保证部署时的环境一致性,也使大规模标准化部署称为可能
![](https://img2020.cnblogs.com/blog/1355734/202003/1355734-20200331160210744-301821861.png)
- 为了进一步理解Docker,先来看一下操作系统和它的内核
![](https://img2020.cnblogs.com/blog/1355734/202003/1355734-20200331161456938-703308273.png)
- 容器比较轻量,采用软件隔离
- 虚拟机是一种强隔离机制
![](https://img2020.cnblogs.com/blog/1355734/202003/1355734-20200331161952032-427335927.png)
![](https://img2020.cnblogs.com/blog/1355734/202003/1355734-20200331162206784-1464529372.png)
- 容器镜像可以认为是一个固话的操作系统
- 采用分层组织方式,可以很方面的实现镜像层的重用
- 读写层在容器提交的时候会固化成镜像层
![](https://img2020.cnblogs.com/blog/1355734/202003/1355734-20200331162448455-692122109.png)
![](https://img2020.cnblogs.com/blog/1355734/202003/1355734-20200331162740681-466158162.png)
- Docker主要用于运行单容器应用,Docker Compose是一个用于定义和运行多容器应用的工具
- 使用Docker Compose可以将多容器应用的部署架构规范在一个yml文件里面,比如,对于有比较复杂依赖的微服务应用可以把整个依赖关系、服务的部署架构规范在一个Compose的yml文件中
- 可以使用docker-compose up一键的方式启动整个应用,也可以一键销毁整个应用
- Docker Compose主要适用于本地测试环境,可以用来运行微服务快速的部署和测试,对于生产环境则建议使用Kubernetes等生产级的容器云平台
![](https://img2020.cnblogs.com/blog/1355734/202003/1355734-20200331165022636-1653958910.png)
![](https://img2020.cnblogs.com/blog/1355734/202003/1355734-20200331170205369-581685278.png)
- 这个Staffjoy微服务应用的主要应用形态是两种:1 Spring Boot应用程序; 2:两个React.js的单页应用;
- 所以Dockerfile会分为两类,这里给了一个样例:Account服务的Dockerfile
![](https://img2020.cnblogs.com/blog/1355734/202003/1355734-20200331170237795-1572410782.png)
- MyAccount单页应用的样例,它构建镜像的步骤稍微复杂一点,采用了一种两阶段构建的技术
- 因为单页应用的构建需要先生成静态资源,然后拷贝到Nginx中去
![](https://img2020.cnblogs.com/blog/1355734/202003/1355734-20200331170803898-1980016185.png)
- 在每一个Spring Boot应用程序里头都有一个Dockerfile
- 在创建镜像之前需要先使用 mvn 进行构建,生成好对应服务的可运行包
![](https://img2020.cnblogs.com/blog/1355734/202003/1355734-20200331171430231-806931720.png)
posted @
2020-03-30 16:21
bm小明
阅读(
199)
评论()
编辑
收藏
举报