利用分层机制优化 Docker Image
2024-10-20 16:37:48
文章转载自:https://mp.weixin.qq.com/s/FrIOIquHVsCTEMfHiF87MA
假设系统中我们有两个应用 App1 和 App2。这两个节点的环境信息如下:
通过上表环境信息的对比,我们发现在这两个不同引用的节点上,不同的部分只是 最后的代码code 的和config 文件。对于其他相同的部分,我们可以考虑通过 Docker Image Layer 的概念将其复用。从而最大限度发挥 Docker 的能力。将上表中的两部分环境信息以分类为节点名,重新以树状结构组织如下图所示。
建议将一些不会经常发生变化的命令或者同类型的命令,合并到同一层。如下图所示:
最后将图中的两个树状结构图进行叠加将重复的节点进行合并,最后得出如下树状结构图:
现在我们已经基于 Docker Image 的分层存储机制完成了一个初步的Docker Image 的规划。接下来就可以根据上图结构分别制作 Image。最终我们将会有三个 Base Image,和最终加入代码的业务镜像。同时基于此,我们的Dockerfile也类比如下:这里本该是 4个 gitlab 仓库制作的 4个镜像。为了方便展示镜像复用关系, 用一个代码块展示
# f1: 运维安全团队增加优化基础安全组件
FROM python3
RUN apt install -y some-security-framework
# push: abc.hub.com/libary/python3
# f2: 架构师安装基础架构
FROM abc.hub.com/libary/python3
RUN wget -c anaconda12.sh && ./anaconda12.sh && rm -f anaconda12.sh
# push: abc.hub.com/ai-tools/env-anaconda:12
# f3: 制作模型镜像
FROM abc.hub.com/ai-tools/env-anaconda:12
RUN pip install -y some-dependences
RUN wget -c s3.xx.com/some-path/dust.model -O /some/path
# push: abc.hub.com/ai-tools/env-anaconda-dust:runtime
# f4: 制作业务镜像
FROM abc.hub.com/rk-ai-tools/env-anaconda-dust:runtime
ADD code /workspace/code
ENTRYPOINT [ "/bin/bash", "/entrypoint.sh" ]
# push: abc.hub.com/rk-ai-pollution/srv-some-appname-amd64:1.0.0-1234567
最新文章
- beans.xml
- bzoj1009矩阵快速面+kmp
- 使用HTML来生产Android界面
- Android基础:Activity
- C\C++头文件说明
- 2 TKinter绑定事件
- PHPExcel读取excel的多个sheet存入数据库
- Laravel 5 基础(七)- Eloquent (laravel 的ORM)
- 引用:初探Sql Server 执行计划及Sql查询优化
- c# 关于10进制和16进制转换以及显示
- 2016-02-03 JS正则表达式
- spring mvc 返回页面数据
- span 右浮动折行 解决ie6/7中span右浮动折行问题
- jQuery源码解析资源便签
- 20175209 《Java程序设计》第八周学习总结
- 利用dockerfile制作基于centos7的lnmp镜像(亲测,详细版)
- 怎样从外网访问内网Memcached数据库
- yarn基本命令
- C++学习(十六)(C语言部分)之 数组三
- httpclient中文乱码