首页服务器Web服务器 编写最佳的Dockerfile的方法

编写最佳的Dockerfile的方法

Dockerfile的语法非常简单,然而如何加快镜像构建速度,如何减少Docker镜像的大小却不是那么直观,需要积累实践经验。这篇博客可以帮助你快速掌握编写Dockerfile的技巧。 为了保…

Dockerfile的语法非常简单,然而如何加快镜像构建速度,如何减少Docker镜像的大小却不是那么直观,需要积累实践经验。这篇博客可以帮助你快速掌握编写Dockerfile的技巧。

为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习。

我已经使用Docker有一段时间了,其中编写Dockerfile是非常重要的一部分工作。在这篇博客中,我打算分享一些建议,帮助大家编写更好的Dockerfile。

目标:

  1. 更快的构建速度
  2. 更小的Docker镜像大小
  3. 更少的Docker镜像层
  4. 充分利用镜像缓存
  5. 增加Dockerfile可读性
  6. 让Docker容器使用起来更简单

总结

  1. 编写.dockerignore文件
  2. 容器只运行单个应用
  3. 将多个RUN指令合并为一个
  4. 基础镜像的标签不要用latest
  5. 每个RUN指令后删除多余文件
  6. 选择合适的基础镜像(alpine版本最好)
  7. 设置WORKDIR和CMD
  8. 使用ENTRYPOINT (可选)
  9. 在entrypoint脚本中使用exec
  10. COPY与ADD优先使用前者
  11. 合理调整COPY与RUN的顺序
  12. 设置默认的环境变量,映射端口和数据卷
  13. 使用LABEL设置镜像元数据
  14. 添加HEALTHCHECK

示例

示例Dockerfile犯了几乎所有的错(当然我是故意的)。接下来,我会一步步优化它。假设我们需要使用Docker运行一个Node.js应用,下面就是它的Dockerfile(CMD指令太复杂了,所以我简化了,它是错误的,仅供参考)。

FROM ubuntuADD . /appRUN apt-get update RUN apt-get upgrade -y RUN apt-get install -y nodejs ssh mysql RUN cd /app && npm install# this should start three processes, mysql and ssh# in the background and node app in foreground# isn't it beautifully terrible? <3CMD mysql & sshd & npm start 
本文来自网络,不代表1号站长-站长学院|资讯交流平台立场。转载请注明出处: https://www.1cn.cc/fwq/web/3093.html
上一篇Jexus开机自动启动配置方法
下一篇 创建的docker容器时间显示错误/date错误/时区错误
admin

作者: admin

这里可以再内容模板定义一些文字和说明,也可以调用对应作者的简介!或者做一些网站的描述之类的文字或者HTML!

为您推荐

评论列表()

    联系我们

    联系我们

    0898-88888888

    在线咨询: QQ交谈

    邮箱: email@wangzhan.com

    工作时间:周一至周五,9:00-17:30,节假日休息

    关注微信
    微信扫一扫关注我们

    微信扫一扫关注我们

    关注微博
    返回顶部