Dockerfile编写规范

Dockerfile

   Dockerfile是由一系列命令和参数构成的脚本,一个Dockerfile里面包含了构建整个image的完整命令。Docker通过docker build执行Dockerfile中的一系列命令自动构建image。
   Dockerfile其语法非常简单,详情参考实践文档

规范

  1. 精简原则,减少代码复杂性以及相关依赖关系和大小
  2. 构建缓存,若不想使用缓存,可通过docker build --no-cache=true命令
  3. 对于From,尽量使用官方的镜像作为基础
  4. 对于特定容器,可以使用标签进行定义,标签以键值对形式出现,若包含空格,则用“包括,若标签对象不唯一,则后者会覆盖前者。
  5. Run命令不易过多过长,命令过长可以用\换行,多个命令最好不要分开执行,浪费资源并且费时
  6. 如需要安装软件包,最好将apt-get upgrade和apt-get install结合使用,类似于清除缓存的作用,避免安装到缓存内过时的版本,如单独使用,kennel导致缓存失效或者后续安装指令失败。
  7. 如果想镜像构建过程中产生任何错误都失败则应避免使用|而转为用&&
  8. 端口暴露尽量使用传统端口,比如Apache Web 的80
  9. 习惯为容器添加环境变量,通常用于为应用程序提供必要的版本信息和环境变量
  10. 对于ADD和COPY,两者类似,但是COPY透明度更高,ADD支持将文件解压以及对于URL的使用,但是对于镜像来讲大小格外重要,所以应该尽量使用curl或者wget代替ADD来进行远程对包的提取,所以对于大多数不需要进行tar自动提取的项目来讲,建议始终使用COPY,并将之放置于最后,可以有效减少缓存无效的数量
  11. ENTRYPOINT的最好用途是设置镜像的主命令,用CMD作为参数,这样就可以像是镜像命令一样运行。如:ENTRYPOINT["s3cmd"]
    CMD ["--help"]
    实际运行时也可以通过命令行覆盖CMD参数
  12. WORKDIR,应当使用绝对路径作为WORKDIR,便于阅读并且易于维护
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,783评论 0 120
  • docker基本概念 1. Image Definition 镜像 Image 就是一堆只读层 read-only...
    慢清尘阅读 9,030评论 1 21
  • 每到大学开学季节,都会拿开学“开学四大件”来说事情,新闻上总是一副不应该的样子,总是觉得学生没有什么正事做,买了它...
    丁昆朋阅读 331评论 0 0
  • 我近日给自己下定了决心,除非万不得已,否则一次只做一件事。如果在做这件事的过程中思绪飘走了,就把注意力拉回来继续只...
    xll2068阅读 430评论 2 1
  • 当我心里有一个人的时候,我就会想去画她。 今天这个人是我的闺蜜。
    静宜园主阅读 183评论 1 1

友情链接更多精彩内容