part_94:镜像的优化

镜像的优化原则

  • 选择最精简的基础镜像
  • 减少镜像的层数
  • 清理镜像构建的中间产物
  • 注意优化网络请求
  • 尽量去用构建缓存
  • 使用多阶段构建镜像

示例

  • 以搭建nginx镜像为例演示如何加速优化Dockerfile
  • 先准备好linux的安装包,将其放入docke目录下
    part_94:镜像的优化
  • 编写Dockerfile
    part_94:镜像的优化
  • 创建容器
    part_94:镜像的优化
  • 封装镜像
    part_94:镜像的优化
    part_94:镜像的优化
  • 查看镜像是否封装成功
    part_94:镜像的优化
  • 运行测试nginx是否可以正常访问
    part_94:镜像的优化
    part_94:镜像的优化
  • 编辑配置文件,将其封装成数据卷
    part_94:镜像的优化
    part_94:镜像的优化
  • 删除之前的nginx,并运行新封装的镜像
    part_94:镜像的优化
  • 查看两次的对比,v2会比v1多一层
    part_94:镜像的优化
  • 查看nginx数据存放位置
    part_94:镜像的优化
    part_94:镜像的优化
  • 编辑测试页面test.html
    part_94:镜像的优化
  • 测试
    part_94:镜像的优化
  • 优化前先清理环境
  • 先将已经在运行nginx的删除
    part_94:镜像的优化
  • 删除数据卷
    part_94:镜像的优化
  • 镜像优化前,查看镜像的大小为276M
  • 第一次优化:减少镜像层数
    将RUN都放在一行,减少层数
    part_94:镜像的优化
  • 重新封装成镜像后查看大小(减少24M)
    part_94:镜像的优化
    part_94:镜像的优化
  • 第二次优化:清理镜像构建的中间产物
    将不想看到的输出都导入垃圾箱
  • 第三次优化:使用多阶段构建镜像
  • 封装镜像后查看大小
    part_94:镜像的优化
  • 重新封装一个镜像查看镜像变成了141M
    part_94:镜像的优化
  • 查看此时的镜像是否能运行成功
    part_94:镜像的优化
    part_94:镜像的优化
  • 最终优化:选择最精简的基础镜像
  • 先将distroless镜像导入docker
    part_94:镜像的优化
  • 编辑Dockerfile
    part_94:镜像的优化
  • 封装成镜像后查看大小(只有23.3MB)
    part_94:镜像的优化
    part_94:镜像的优化
  • 测试一下这么小的镜像能否正常使用
    part_94:镜像的优化
    part_94:镜像的优化