Docker镜像压缩和优化

背景

在构建Docker容器时,应该尽量想办法获得体积更小的镜像,因为传输和部署体积较小的镜像速度更快。
但RUN语句总是会创建一个新层,而且在生成镜像之前还需要使用很多中间文件,在这种情况下,该如何获得体积更小的镜像呢?

docker image形成的示例

示例:Dockerfile

FROM Ubuntu:14.04
ADD run.sh /
VOLUME /data
CMD [“./run.sh”]

上面的dockerfile的行为:
基于Ubuntu:14.04系统将run.sh放在根目录下,设置卷挂载点,然后在image启动的时候run脚本run.sh。下图就是形成的docker image:
Docker镜像压缩和优化_第1张图片
通过上面的示例可以看到,docker镜像的生成过程。

docker镜像的压缩和优化

  1. 选择一个较小的原镜像,也就是FROM后面的那个镜像尽量要小
  2. 选择多阶段构建镜像,最终的镜像不包含编译器和整个编译工具链
  3. 第一阶段指定WORKDIR,第二阶段使用绝对路径拷贝文件
  4. 使用静态库替代动态库
  5. 根据实际情况对Dockerfile中的层进行合并,比如将多条RUN命令合并成一条

你可能感兴趣的:(docker)