为什么?

  1. 增强dockerfile可读性(部门同事,理解不一,做到别人也能看懂,或者,出现bug,方便别人排查)
  2. 更快的构建速度(坚持更小的镜像大小、更少的镜像层,充分利用镜像缓存)
  3. 使用更简单

是什么

提示:从哪几个方面着手,不要出现问题再排查,而要通过合理规划,避免不必要的问题。

1、 规划合理序,COPY与ADD(优先及其顺序)
把变化最少的放在 Dockerfile 的前面,可以充分利用镜像缓存
COPY指令简单,仅用于将文件拷贝到镜像中。ADD相对来讲复杂一些,执行效率低。

2、 择最优基础镜像(alpine 版本最好,不要用 latest)
latest不稳定,出现bug,参考文档很少,很难解决,必须要用,则写上标签latest,否则,它会一个个查找,找不到匹配的,才选择latest。

3、 容器只运行个应用
多个应用的日志难以处理(多个应用的日志会混合到一起,不方便查找)
横向扩展,非常费资源(不同的应用需要运行的容器数并不相同)
构建时间长(修改前端之后,整个后端也要重新构建)

4、 将多个 RUN 指令并为一个
Dockerfile 的每个指令都会创建一个新的镜像层。合并一个,只创建一个镜像层
例如:RUN apk update && apk add wget


排错

1、 端口冲突

docker file的优化及常见错误排查_容器


思路:可以先复制在网站翻译,定位问题焦点;选择合适的排查方法;

docker ps 查看运行中的容器

看到一个8080的容器已经运行,删除或者更改容器端口运行即可

docker file的优化及常见错误排查_运维_02