Docker-镜像优化
BackGround
Docker如果最后的镜像很大,所以是需要优化的。
- 安装不必要的软件包会增加攻击面,从而增加安全风险。
- 镜像传输需要更多时间。
- 部署大镜像需要更多时间。
优化方法
优化一:合并RUN
原始Docker
FROM hub.c.163.com/netease_comb/centos:7 MAINTAINER netease
RUN yum install -y wget RUN yum install -y curl RUN yum install -y vim
WORKDIR /app
|
优化Docker
FROM hub.c.163.com/netease_comb/centos:7 MAINTAINER netease
RUN yum install -y wget && \ yum install -y curl && \ yum install -y vim
WORKDIR /app
|
效果
优化二:使用较小的基础镜像
减小 docker 镜像大小最明显的方法是使用较小的基础镜像。
如果希望为 python 应用程序创建镜像,请考虑使用 python:3.9-slim 镜像而不是 python:3.9。
python:3.9 的大小约为 1.3 GB,而 python:3.9-slim 的大小仅为 1 GB 左右。
您可以使用 alpine 版本进一步减少镜像。alpine 镜像是专门为作为容器运行而设计的,而且体积非常小。python:3.9-alpine 镜像只有 49 MB
优化三:使用多阶段构建来减小大小
优化四:apt 安装中使用 –no-install-recommends 标志
优化前
FROM ubuntu:latest RUN apt update -y && \ apt install unzip -y --no-install-recommends && \ apt install curl --no-install-recommends -y && \ apt install python3 -y --no-install-recommends
|
优化后
FROM ubuntu:latest RUN apt update -y && \ apt install unzip -y --no-install-recommends && \ apt install curl --no-install-recommends -y && \ apt install python3 -y --no-install-recommends
|
优化五:在 apt install 命令后添加 rm -rf /var/lib/apt/lists/
优化前
FROM ubuntu:latest RUN apt update -y && \ apt install unzip -y --no-install-recommends && \ apt install curl --no-install-recommends -y && \ apt install python3 -y --no-install-recommends
|
优化后
FROM ubuntu:latest RUN apt update -y && \ apt install unzip -y --no-install-recommends && \ apt install curl --no-install-recommends -y && \ apt install python3 -y --no-install-recommends && \ rm -rf /var/lib/apt/lists/*
|
优化六:使用 .dockerignore 文件
ignorethisfile.txt logs/ ignorethisfolder/ .git .cache *.md
|
优化七:在 RUN 之后放置 COPY
优化前
FROM ubuntu:20.04 COPY file /home/ubuntu RUN apt update -y && \ apt install unzip -y --no-install-recommends && \ apt install curl --no-install-recommends -y && \ apt install python3 -y --no-install-recommends && \ rm -rf /var/lib/apt/lists/*
|
优化后
FROM ubuntu:20.04
RUN apt update -y && \ apt install unzip -y --no-install-recommends && \ apt install curl --no-install-recommends -y && \ apt install python3 -y --no-install-recommends && \ rm -rf /var/lib/apt/lists/* COPY file /home/ubuntu
|
优化八:使用工具
- docker-squash
- Dive
- fromlatest.io