怎么减小Docker的镜像体积?

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: **Docker 镜像优化目标:**提升构建速度、减小镜像大小、增强安全性和效率。**技巧:**1) 选择轻量级基础镜像(如Alpine、Ubuntu Minimal);2) 使用多阶段构建,分阶段复制文件和执行操作;3) 利用缓存加速构建,避免不必要的重复;4) 合并`RUN`指令减少镜像层数。这些方法能显著优化镜像,提高性能和节省存储空间。

优化 Docker 镜像的目的:

  • 提高构建速度
  • 减少镜像大小
  • 提高安全性和效率

优化技巧:

  1. 使用适当的基础镜像
  • 选择轻量级基础镜像,如 Alpine、Ubuntu Minimal。
  1. 使用多阶段构建
  • 通过在一个 Dockerfile 中使用多个 FROM 指令,每个代表一个构建阶段。
  • 每个阶段复制所需文件,执行特定构建操作。
  • 例子:

Dockerfile

  • 复制代码
# 构建阶段1
FROM golang:1.17 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp

# 构建阶段2
FROM alpine:latest
COPY --from=builder /app/myapp /usr/local/bin/
WORKDIR /usr/local/bin
CMD ["myapp"]
  1. 有效使用缓存
  • Docker 利用缓存优化构建过程,避免重复构建。
  • 例子:

Dockerfile

  • 复制代码
# 设置基础镜像
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["node", "app.js"]
  1. 多层镜像构建优化
  • 合并多个 RUN 指令,减少镜像层数,节省存储空间。
  • 例子:

Dockerfile

  • 复制代码
RUN apt-get update && apt-get install -y \
    package1 \
    package2 \
    package3

结论

通过以上四个技巧,可以显著减小 Docker 镜像的体积,提高构建效率和运行时性能。


转载来源:https://juejin.cn/post/7386927836848881699

相关文章
|
1月前
|
应用服务中间件 Linux nginx
Docker镜像-手动制作yum版nginx镜像
这篇文章介绍了如何手动制作一个基于CentOS 7.6的Docker镜像,其中包括下载指定版本的CentOS镜像,创建容器,配置阿里云软件源,安装并配置nginx,自定义nginx日志格式和web页面,最后提交镜像并基于该镜像启动新容器的详细步骤。
104 21
Docker镜像-手动制作yum版nginx镜像
|
7天前
|
jenkins 持续交付 Docker
docker之自定义制作镜像(python程序)
docker之自定义制作镜像(python程序)
|
1月前
|
应用服务中间件 nginx Docker
Docker镜像-基于DockerFile制作编译版nginx镜像
这篇文章介绍了如何基于Dockerfile制作一个编译版的nginx镜像,并提供了详细的步骤和命令。
147 17
Docker镜像-基于DockerFile制作编译版nginx镜像
|
1月前
|
应用服务中间件 Linux nginx
Docker镜像管理篇
关于Docker镜像管理的教程,涵盖了Docker镜像的基本概念、管理命令以及如何制作Docker镜像等内容。
117 7
Docker镜像管理篇
|
1月前
|
应用服务中间件 Linux nginx
Docker镜像-基于DockerFile制作yum版nginx镜像
本文介绍了如何使用Dockerfile制作一个基于CentOS 7.6.1810的yum版nginx镜像,并提供了详细的步骤和命令。
75 20
|
1月前
|
Docker 容器
Docker Hub镜像公共仓库使用
这篇文章介绍了如何使用Docker Hub公共仓库进行镜像的创建、上传、下载和管理。
439 8
|
2月前
|
存储 安全 Ubuntu
Docker 镜像与 Docker 容器的区别
【8月更文挑战第27天】
83 5
|
2月前
|
运维 Ubuntu Shell
掌握Docker容器的创建:从镜像到实例
【8月更文挑战第27天】
169 4
|
2月前
|
物联网 Serverless API
函数计算产品使用问题之怎么部署Docker镜像进行lora训练
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
2月前
|
存储 Docker 容器
阿里云私有docker仓库构建海外镜像
【8月更文挑战第25天】
135 3
下一篇
无影云桌面