首页 > 其他分享 >如何减⼩dockerfile⽣成镜像体积?

如何减⼩dockerfile⽣成镜像体积?

时间:2024-09-08 16:27:36浏览次数:9  
标签:构建 RUN -- cache 体积 镜像 dockerfile

减小 Dockerfile 生成的镜像体积可以通过多种方法实现。以下是一些有效的策略:

1. 选择合适的基础镜像

  • 使用更小的基础镜像:例如,使用 alpine 镜像代替 ubuntudebian,因为 Alpine 的体积通常更小。
    FROM alpine:latest
    

2. 优化安装过程

  • 减少层数:将多个 RUN 命令合并为一个,减少镜像层的数量。

    RUN apk add --no-cache package1 package2
    
  • 使用 --no-cache 选项:在安装包时防止缓存,以减少临时文件和缓存的体积。

    RUN apk add --no-cache package
    

3. 清理不必要的文件

  • 删除临时文件:在构建过程中产生的临时文件应及时删除,以免它们被包含在最终镜像中。
    RUN apk add --no-cache package && \
        rm -rf /var/cache/apk/*
    

4. 利用 .dockerignore 文件

  • 排除不必要的文件:使用 .dockerignore 文件排除构建上下文中的不需要的文件和目录,避免它们被复制到镜像中。

5. 多阶段构建

  • 使用多阶段构建:将构建和运行分开。在第一阶段中构建应用程序,并仅将最终的可执行文件或所需文件复制到第二个阶段中,从而减少最终镜像的体积。
    FROM golang:1.16 AS builder
    WORKDIR /app
    COPY . .
    RUN go build -o myapp
    
    FROM alpine:latest
    WORKDIR /app
    COPY --from=builder /app/myapp .
    CMD ["./myapp"]
    

6. 选择合适的语言和工具

  • 优化依赖:在构建应用时,确保只安装必要的库和依赖。使用 requirements.txt 或类似的文件来精确控制依赖项。

7. 压缩镜像

  • 使用工具压缩镜像:可以使用 docker-squash 等工具将镜像层合并,从而减小最终镜像的体积。

8. 定期清理无用镜像

  • 清理未使用的镜像和容器:使用 docker system prune 命令清理未使用的镜像、容器和网络,释放磁盘空间。

总结

通过选择合适的基础镜像、优化安装过程、利用多阶段构建等方式,可以有效减小 Dockerfile 生成的镜像体积。这不仅能提高镜像的传输速度,也能节省存储空间。

标签:构建,RUN,--,cache,体积,镜像,dockerfile
From: https://www.cnblogs.com/love-DanDan/p/18403076

相关文章

  • Ubuntu 22.04 镜像源
    #aliyundebhttp://mirrors.aliyun.com/ubuntu/lunarmainrestricteduniversemultiversedeb-srchttp://mirrors.aliyun.com/ubuntu/lunarmainrestricteduniversemultiversedebhttp://mirrors.aliyun.com/ubuntu/lunar-securitymainrestricteduniversemultive......
  • Docker 配置国内镜像源
    由于GFW的原因,在下载镜像的时候,经常会出现下载失败的情况,此时就可以使用国内的镜像源。什么是镜像源:简单来说就是某个组织(学校、公司、甚至是个人)先通过某种手段将国外的镜像下载下来,然后上传到国内的网站,这样我们在国内就可以通过这个网站下载到镜像源‍起因笔者有......
  • 国内npm源镜像(npm加速下载) 指定npm镜像
    指定npm镜像npm官方原始镜像网址是:https://registry.npmjs.org/淘宝NPM镜像:http://registry.npmmirror.com阿里云NPM镜像:https://npm.aliyun.com腾讯云NPM镜像:https://mirrors.cloud.tencent.com/npm/华为云NPM镜像:https://mirrors.huaweicloud.com/repository/npm/网......
  • Docker 镜像的分层概念
    40.镜像的分层概念来更深入地理解镜像的概念‍镜像的分层镜像,是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是image镜......
  • python镜像库替换为国内镜像
    全局生效,而非单个项目!!windows系统使用命令:type%USERPROFILE%\pip\pip.ini查看是否有pip.ini文件,没有的话创建该文件,可以在C:\Users\username下使用notepad++等编辑pip.ini文件,添加下面代码:[global]index-url=https://mirrors.aliyun.com/pypi/simple/[install]trust......
  • 推荐5个可以免费使用GPT的镜像站
    1.Kimi链接:点击直达Kimi由月之暗面科技有限公司(MoonshotAI)开发,擅长中英文对话,能够提供安全、有帮助、准确的回答。2.灵办AI链接:点击直达免费一键改写润色爆款文案,总结文档内容,同时集对话、翻译、写作、搜索于一身的神器3.智能小G链接:点击直达“智能小G”是基......
  • Docker的镜像设置
    一、启动hello-world二、查看镜像dockerimages三、设置docker镜像地址打开阿里云网址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrorsbash执行这段命令sudomkdir-p/etc/dockersudotee/etc/docker/daemon.json<<-'EOF'{"registry-mirrors":[&qu......
  • 配置Gradle使用国内镜像加速依赖下载
      目录修改 settings.gradle 文件 修改 build.gradle 文件配置全局Gradle设置   要在Gradle项目中配置使用国内镜像,可以采取以下步骤来全局替换默认的仓库为国内可用的镜像源。这里假设想将Maven中央仓库等默认仓库更换为阿里云、清华大学或者其他的国内镜......
  • grafana/K6 的 Docker 镜像pull另存为tar的文件
    因国内环境限制,如果直接pull grafana/K6的镜像会失败,可通过以下方式pull配置方式1:临时使用直接使用,直接拿镜像域名拼接上官方镜像名,例如要拉去镜像dockerpullloadimpact/k6,可以用下面写法dockerpulldocker.registry.cyou/loadimpact/k6配置方式2:长久有效修改文件 /......
  • 记一次阿里云搭建K8S在恢复镜像快照之后etcd一个节点无法启动问题
    环境查看系统环境#cat/etc/redhat-releaseCentOSLinuxrelease7.9.2009(Core)#uname-aLinuxCentOS7K8SMaster010051013.10.0-1160.114.2.el7.x86_64#1SMPWedMar2015:54:52UTC2024x86_64x86_64x86_64GNU/Linux软件环境#kubectlversionClientVe......