Dockerfiles 最好的实践
集团共同运营
Docker 将图像构建为图层集合。每个图层只能添加数据,即使此数据表明文件已被删除。每条指令都会创建一个新图层。例如:
RUN apt-get -qq update
RUN apt-get -qq install some-package
有几个缺点:
- 它将创建两个图层,从而生成更大的图像。
- 在
RUN
语句中单独使用apt-get update
会导致缓存问题,随后apt-get install
指令可能会失败。假设你稍后通过添加额外的包修改apt-get install
,然后 docker 将初始和修改的指令解释为相同并重新使用先前步骤中的缓存。因此,不执行apt-get update
命令,因为在构建期间使用了其缓存版本。
相反,使用:
RUN apt-get -qq update && \
apt-get -qq install some-package
因为这只产生一层。
提到维护者
这通常是 Dockerfile 的第二行。它告诉谁谁负责,并将能够提供帮助。
LABEL maintainer John Doe <john.doe@example.com>
如果你跳过它,它不会破坏你的形象。但它也无助于你的用户。
要简明扼要
保持 Dockerfile 简短。如果需要进行复杂设置,请考虑使用专用脚本或设置基本映像。