Dockerfile书写的最佳实践是什么

  • 通过Dockerfile所构建的镜像应该越精简越好。
  • 尽量不要安装非必要的软件包。
  • 一个容器只运行一个单独的实例,将具有耦合度的应用分别安装到不同的容器里面。
  • 慎重引入新的数据层。
  • 将准备安装的软件包安装字母顺序排列。这样可以回避重复安装软件包的情况,同时也有助于进行软件更新。通过添加"\"分割命令,可以增强代码的可读性。
  • 用官方提供的镜像版本作为基础镜像,减小镜像的体积。
  • 将多条RUN 命令使用"/"连接起来,这样更易于理解,可以方便维护。
  • 为镜像定义一个比较通用的端口,比如一个用来提供Apache web服务的镜像,最好是暴露80端口。
  • Dockerfile开头的几句指令应该固定下来,不要每次都随意更改,这样可以利用缓存。
  • 通过-t标记来构建镜像,有助于用户管理每个创建的镜像。
  • 不要在Dockerfile中映射公有端口。
  • 使用CMD和ENTRYPOINT时,一定要用数组语法,而且CMD和ENTRYPOINT 结合使用更好。
  • 不要开机初始化
  • 在push之前,在本地先构建一下,确保在本地构建的镜像在任何地方都可以正常运行。
  • 不要在构建中升级版本,如果更新时试图修改 init 或改变容器的内容,更新可能会失败,还可能会产生不一致的镜像。
  • FROM命令应该包含基础镜像的完整仓库名和标签。
  • 使用指令组合,比如apt-get update应该与apt-get install组合。