文章转载自: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

最新文章

  1. beans.xml
  2. bzoj1009矩阵快速面+kmp
  3. 使用HTML来生产Android界面
  4. Android基础:Activity
  5. C\C++头文件说明
  6. 2 TKinter绑定事件
  7. PHPExcel读取excel的多个sheet存入数据库
  8. Laravel 5 基础(七)- Eloquent (laravel 的ORM)
  9. 引用:初探Sql Server 执行计划及Sql查询优化
  10. c# 关于10进制和16进制转换以及显示
  11. 2016-02-03 JS正则表达式
  12. spring mvc 返回页面数据
  13. span 右浮动折行 解决ie6/7中span右浮动折行问题
  14. jQuery源码解析资源便签
  15. 20175209 《Java程序设计》第八周学习总结
  16. 利用dockerfile制作基于centos7的lnmp镜像(亲测,详细版)
  17. 怎样从外网访问内网Memcached数据库
  18. yarn基本命令
  19. C++学习(十六)(C语言部分)之 数组三
  20. httpclient中文乱码

热门文章

  1. dolphinscheduler添加hana支持
  2. 常用源&配置
  3. Ubuntu挂载smb到本地
  4. JetBrains系列软件激活
  5. day11 Java反射机制
  6. OptaPlanner 发展方向与问题
  7. WPF 实现用户头像选择器
  8. 出现 Expected 0 arguments but found 1 的bug原因
  9. Java学习--方法
  10. gorm tips