docker(四):镜像封装经验整理

说明

  • 本博客每周五更新一次。
  • docker镜像封装是复杂环境软件部署的良好方案,某些程序运行环境软件版本要求严格,且安装复杂,docker能大幅度降低部署难度,只需要搭建同版本docker服务,即可实现平滑迁移。
  • 本期博文将介绍docker的小技巧,增加镜像运行稳定性和可维护性。

分享

技巧

基础镜像封装参照上篇博文

镜像启动

  1. 镜像启动建议添加--restart=always参数,设置该容器(启动的镜像是容器)随docker服务启动,防止电脑重启后,容器要手动启动。
  2. 增加共享目录:-v 主机目录:容器目录,虽然docker支持命令级的容器内外文件传输,但共享能更加方便直接操作容器内文件,简化操作流程。

镜像结构

  • 镜像结构建议拆分两部分
    • 镜像包
      • 使用docker export 命令导出的镜像包,内含软件运行的所有系统环境,如机器学习软件首先安装python和相关TensorFlow、numpy等一系列引用库。非系统级软件放入资源包,尽量减小镜像包大小。
      • 封装上一步到位,减少不必要的更新。
    • 资源包
      • 该包以共享目录映射到容器找那个,内部包含项目运行代码、脚本、日志和相关资源文件,如机器学习的网络模型文件。
      • 主要将经常修改与镜像拆分开,以此降低镜像服务升级难度,更新时不必重新发布镜像包,更新资源包对应文件,重启服务即可。
  • 拆分镜像包主要目的是将经常更新和稳定的拆分管理,降低升级难度,不必每次都更新镜像包,提升发布更新效率。

镜像优化

  • 除了在启动和镜像包结构上优化镜像,镜像内部也需要调整。
    • 服务监控
      • 容器内创建crontab任务,定时确认容器内服务是否正常运行,异常时自动重启,确保服务随容器运行时。
    • 日志自动清理
      • 容器内创建crontab任务,定时清理软件日志,避免日志堆积,造成容器运行时间越长,存储越大,直至最后崩溃。

总结

  • 以上是现有容器封装的经验分享,某些方面可能不够完备,欢迎指正。
  • 记得有次封装完镜像,环境加代码5G的镜像包,远程传输到外地,再部署到内网,一想到后面每次升级二次封包,头大一圈,思来想去才有了拆包方案,后续更新终于不那么痛苦了。
  • 技术之路永无止境,人生坎坷如影随形,没有简单的人生,加油。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值