zoukankan      html  css  js  c++  java
  • Dockerfile 最佳实践

    Reference:[Intro Guide to Dockerfile Best Practices]

    本文涉及以下几方面:

    • 构建时间 (Build Time)
    • 镜像大小 (Image size)
    • 可维护性(Maintainability)
    • 可再现性 (Reproducibility)



    构建时间

    在一次发布过程中, 镜像可能会经过多次重建(rebuild), 最后发布(release). docker 镜像在构建过程中,会保留缓存(cache), 在重建的过程中可以降低构建时间.

    所以, 提高 cache 的利用率, 可以提升发布效率.

    Layer 变化会引起缓存的失效, 在 Dockerfile 中, 只要一条执行命令发生变化, 就会引起其后所有的执行缓存失效.

    所以, 提供缓存的利用率, 可以如下入手:

    • 降低引起变化的可能行
    • 降低发生变化后的影响

    1.调整指令的顺序

    • 降低发生变化后的影响

    2.COPY 项目更加具体

    • 降低引起变化的可能行

    3.合并构建单元

    • 降低引起变化的可能行


    镜像大小

    1.移除不必要的依赖

    • debug 工具可以 container 中安装

    2.删除包管理工具缓存

    • 只有在同一条 RUN 命令中移除才会真正的生效.


    可维护性

    1.优先使用官方镜像


    2.指定镜像标签

    • 默认 latest 标签极大可能会导致项目构建失败.

    3.选择最小的版本



    可重现性

    1.从源码构建

    • 防止因为构建环境不一致导致发布失败

    2.分离获取依赖步骤


    3.多阶构建

    • 多阶构建可以有效降低镜像的大小

  • 相关阅读:
    node同时验证手机号和座机号
    导入excle到服务器时候删除服务器历史数据
    杂七杂八
    c# 导出表格 api
    c# 导出表格
    element split 将多个单号分隔
    vue 前台传后台
    vue.js 使用时间组件 日期少一天的问题
    layui 文字滚动
    CRT&&EXCRT学习笔记
  • 原文地址:https://www.cnblogs.com/tiantiandas/p/intro-guide-to-dockerfile-best-practices.html
Copyright © 2011-2022 走看看