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