本节介绍了容器镜像服务: Dockerfile高效编写指引。 概述 Docker依赖Dockerfile来自动构建镜像。Dockerfile的语法虽然简单,但是如何编写Dockerfile来减小镜像大小并加快镜像构建速度却需要实践经验的累积。本节介绍Dockerfile编写的一些最佳实践,以帮助编写出高效的Dockerfile。 通过.dockerignore排除文件 Docker在构建镜像时,会将Dockerfile目录中的所有文件收集到进程中。对于不需要参与构建的文件,可以通过.dockerignore文件来进行排除,从而减小镜像的大小。.dockerignore的语法类似.gitignore,示例如下: plaintext .git/ nodemodules/ 该示例排除了Dockerfile目录中的.git和nodemodules两个文件夹。 容器只运行单个应用 Docker虽然支持运行多个进程,例如将前端、后端和数据库都运行在一个Docker容器中,但这样做会带来一些问题: 构建时间长,修改某个应用导致整体重新构建 镜像体积大 不同应用所需资源不同,扩展时导致资源浪费 因此,最好将服务拆分成不同的应用,对每个应用单独进行镜像构建和部署。例如一个依赖node.js和MySQL的服务的Dockerfile原本需要安装两者的依赖: plaintext RUN aptget install y nodejs mysql 进行拆分之后,node.js和MySQL服务可以单独部署。 node.js服务的Dockerfile包含: plaintext RUN aptget install y nodejs MySQL服务的Dockerfile包含: plaintext RUN aptget install y mysql