公司中的全部镜像都是要上传到harbor仓库上,一层一层的打镜像,在打的同时将镜像上传到harbor上php
这个目录结构必定要提早设计好,我先将官方的原始系统镜像pull下来,在这层的基础之上咱们会加一些经常使用命令前端
不然后期还要在镜像中安装命令太过于麻烦,咱们将这个安装经常使用命令的镜像称为公司的基础镜像叫作baseimgae,后期咱们在打镜像的时候就再也不调用官方的了,而是直接调用baseimgae。咱们会在baseimgae这个镜像中不只要安装命令,并且还要将咱们的经常使用用户建立好,这个镜像建立好了以后再往下就会分叉了,java
由于公司有不少业务,这一层就包括了各类服务镜像如jdk(java环境使用的镜像)、安装PHP的镜像、安装NGINX的镜像等等服务。而后这一层再提交为一层业务镜像,并在JDK的镜像层往下再打一层tomcat的业务层,在tomcet这层以后再打一层代码层。用来存放代码的APP一、APP2这一层只是编译安装了各个服务而已他们上面是没有任何代码和web页面数据的。node
而后再将这一层打出来的镜像就能够往公司的 Harbor 仓库进行上传了。mysql
宿主机:nginx
打完了这几层镜像以后,下面就是运行这些镜像的各个node节点也就是所谓的宿主机,要保证咱们的宿主机可以在公司的harbor上去拉取镜像,当宿主机拉取完了镜像以后,咱们就让该宿主机运行一个容器。而后再将全部nginx容器的数据都存放到NAS存储上,以实现数据同步。而NAS存储是先挂载在宿主机上,而后是宿主机将这个存储给各个容器去使用。由java容器往NAS存储上写数据,再由nginx容器来读NAS存储上的数据,因此他们其实是看到的同一份数据web
总结:sql
咱们从镜像分层上,咱们不会像docker官方那样一步打成咱们的业务镜像,由于像官方那样一次性操做的步骤太多了,不利于后期dockerfile文件以及没作一个容器就要重新打一次镜像,不能实现dockerfile文件屡次复用。docker
因此咱们会将每一个步骤才分开,每一个步骤都是一层镜像,这样后期某个业务想用某个环境的镜像直接就基于不一样层的dockerfile文件进行调用。centos
更多文章和资料|点击下方文字直达 ↓↓↓
阿里云K8s实战手册
[阿里云CDN排坑指南]CDN
ECS运维指南
DevOps实践手册
Hadoop大数据实战手册
Knative云原生应用开发指南
OSS 运维实战手册