Dockerfile制作的分层构建概念

元宇宙
• 阅读 563

Dockerfile制作的分层构建概念

公司中的所有镜像都是要上传到harbor仓库上,一层一层的打镜像,在打的同时将镜像上传到harbor上

第一层原始系统层(ubantu/debain/centos):

这个目录结构一定要提前设计好,我先将官方的原始系统镜像pull下来,在这层的基础之上我们会加一些常用命令

第二层常用命令层:

否则后期还要在镜像中安装命令太过于麻烦,我们将这个安装常用命令的镜像称为公司的基础镜像叫做baseimgae,后期我们在打镜像的时候就不再调用官方的了,而是直接调用baseimgae。我们会在baseimgae这个镜像中不仅要安装命令,而且还要将我们的常用用户创建好,这个镜像创建好了之后再往下就会分叉了,

第三层业务层(nginx、PHP、JDK、tomcat、mysql等业务):

因为公司有很多业务,这一层就包括了各种服务镜像如jdk(java环境使用的镜像)、安装PHP的镜像、安装NGINX的镜像等等服务。然后这一层再提交为一层业务镜像,并在JDK的镜像层往下再打一层tomcat的业务层,在tomcet这层之后再打一层代码层。用来存放代码的APP1、APP2这一层只是编译安装了各个服务而已他们上面是没有任何代码和web页面数据的。

第四层代码层(静态服务前端代码和tomcat的jsp代码等):

然后再将这一层打出来的镜像就可以往公司的 Harbor 仓库进行上传了。

宿主机:

打完了这几层镜像之后,下面就是运行这些镜像的各个node节点也就是所谓的宿主机,要保证我们的宿主机能够在公司的harbor上去拉取镜像,当宿主机拉取完了镜像之后,我们就让该宿主机运行一个容器。然后再将所有nginx容器的数据都存放到NAS存储上,以实现数据同步。而NAS存储是先挂载在宿主机上,然后是宿主机将这个存储给各个容器去使用。由java容器往NAS存储上写数据,再由nginx容器来读NAS存储上的数据,所以他们实际上是看到的同一份数据

总结:

我们从镜像分层上,我们不会像docker官方那样一步打成我们的业务镜像,因为像官方那样一次性操作的步骤太多了,不利于后期dockerfile文件以及没做一个容器就要从新打一次镜像,不能实现dockerfile文件多次复用。

所以我们会将每个步骤才分开,每个步骤都是一层镜像,这样后期某个业务想用某个环境的镜像直接就基于不同层的dockerfile文件进行调用

更多文章和资料|点击下方文字直达 ↓↓↓
阿里云K8s实战手册
[ 阿里云CDN排坑指南] (https://mp.weixin.qq.com/s/te...
ECS运维指南
DevOps实践手册
[Hadoop大数据实战手册] (https://mp.weixin.qq.com/s/f7...
Knative 云原生应用开发指南
OSS 运维实战手册
点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
Gitlab+Jenkins+K8s集群+Kuboard+Harbor实现自动化CICD
本次通过GitlabJenkinsK8s集群KuboardHarbor实现自动化CICD,当容器镜像推送到Harbor镜像库中之后,自动触发dockerpull更新Kubernetes环境中的容器镜像。实验拓扑图:!1.png(https://s2.51cto.com/images/20201004/16018188
Stella981 Stella981
3年前
Harbor部署私有镜像仓库
部署私有仓库下载harbor2.1.0安装包下载离线安装包:$wgethttps://github.com/goharbor/harbor/releases/download/v2.1.0rc2/harborofflineinstallerv2.1.0rc2.tgz解压!修改
Stella981 Stella981
3年前
Docker:dockerfile构建php项目 [八]
一、把项目封装成docker镜像的步骤把项目封装成docker镜像的步骤:1、先运行一个基础容器,手动制作docker镜像2、编写dockerfile,构建镜像3、测试运行二、dockerfile常用指令参考1、dockerfile常用指令:
Stella981 Stella981
3年前
Dockerfile构建镜像及相关命令
Dockerfile镜像描述文件Dockerfile是一个包含用于组合镜像的命令的文本文档Docker通过读取Dockerfile中的指令按步自动生成镜像dockerbuildt机构/镜像名<:tagsDockerfile目录Dockerfile基础命令FROM基
Stella981 Stella981
3年前
Harbor v2.0 镜像回收那些事
Harbor镜像回收流程Harbor镜像回收分两部分:1、删除镜像TAG2、执行垃圾清理早期Harbor1.0版本时,删除镜像TAG可以通过UI界面手动一个个选取删除,也可以调用官方提供的SDK删除(很早以前官方不维护了)。后来官方在1.9版本提供TAG保留策略,解决以
Stella981 Stella981
3年前
Docker容器构建过程的安全性分析
来源:嘶吼专业版ID:Pro4houDevOps概念的流行跟近些年微服务架构的兴起有很大关系,DevOps是Dev(Development)和Ops(Operations)的结合,Dev负责开发,Ops负责部署上线,Docker出现之前,公司需要搭建一个数据库环境,有了Docker之后,只需在一些开源的基础镜像上构建出公司自己的镜像即可。因此目前
Stella981 Stella981
3年前
Docker容器加载宿主机的hosts解析
前言  公司一直在用传统的tomcat下丢war包的架构体系,随着项目的增多、服务器数量的增多、需要为此花费很多时间在不同服务器的系统环境问题上。为了技术的与时俱进和工作的运维效率等方面,笔者引入docker容器部署方式,通过GitlabJenkinsHarbor体系,通过Dockerfile生成自定义镜像并放置Harbor仓库,Jenkins加上自
Stella981 Stella981
3年前
Docker学习——多阶段构建(六)
之前的做法在Docker17.05版本之前,我们构建Docker镜像时,通常会采用两种方式:全部放入一个Dockerfile一种方式是将所有的构建过程编包含在一个Dockerfile中,包括项目及其依赖库的编译、测试、打包等流程,这里可能会带来的一些问题:1、Dockerfile特别长,可维护性降低2、镜像层次多,镜像体积较大,
Stella981 Stella981
3年前
Docker镜像管理
Docker镜像管理创建镜像镜像的创建有以下几种方法:使用ISO镜像:回顾下OpenStack,我们在创建虚拟机的时候,首先使用iso安装定制了镜像上传到Glance上面,对于Docker来说,我们同样可以使用ISO镜像来制作基本镜像。使用工具制作镜像:不同的操作系统都提供了相应的工具来让用户创建Docker镜像
Stella981 Stella981
3年前
Docker镜像优化:从1.16GB到22.4MB
Docker是一个供软件开发人员和系统管理员使用容器构建、运行和与分享应用程序的平台。容器是在独立环境中运行的进程,它运行在自己的文件系统上,该文件系统是使用docker镜像构建的。镜像中包含运行应用程序所需的一切(编译后的代码、依赖项、库等等)。镜像使用Dockerfile文件定义。术语dockerization或containeriz
RabbitMQ集群部署(三)——镜像集群模式部署及常见问题
本文分享自天翼云开发者社区《》,作者:芋泥麻薯镜像集群模式与普通集群模式的主要区别在于.无论queue的元数据还是queue中的消息都会同时存在与多个实例上.要开启镜像集群模式,需要在后台新增镜像集群模式策略.即要求数据同步到所有的节点.也可以指定同步到指