介绍Docker 镜像是用于构建 Docker 容器的基本组件。尽管密切相关,但Docker 镜像和容器之间存在重大差异。
docker 镜像是容器的基础。这些镜像是通过编写 Dockerfiles 来创建的,Dockerfiles是为创建特定的 Docker 镜像而自动执行的指令列表。
Docker如何使用更小的镜像?在构建 Docker 镜像时,你要确保保持轻量级。避免使用大镜像可加快构建和部署容器的速度。因此,将镜像尺寸减小到最小是至关重要的。
继续阅读以了解如何保持 Docker 镜像较小。
使用较小的镜像库(Alpine)【Docker镜像大小(如何保持小(如何使用更小的镜像?))】如何保持Docker镜像较小?要创建 Docker 镜像,你需要一个可以根据需要安装和添加组件的基础。你可以下载现有的父镜像并将其用作你自己的镜像的基础或从头开始构建一个。
你安装操作系统的变体作为镜像的基础。操作系统基础可以极大地影响最终 Docker 镜像的大小,这就是为什么选择正确的镜像起着重要作用的原因。
Linux 创建了一个有用的替代方案,它是轻量级的并且具有最小的 POSIX 环境 –
Alpine。这个 Linux 发行版镜像库只有 5 MB,围绕musl libc和BusyBox构建。
与其他操作系统镜像相比,Alpine 的大小要小得多。下载次数最多的操作系统镜像 Ubuntu 为 188 MB,而 Alpine 仅为 5 MB。
使用 .dockerignore 文件如何减少Docker镜像大小?排除镜像不需要的某些文件可以帮助你减小镜像大小。这就是.dockerignore文件的用武之地。
构建镜像时,你需要编写一个 Dockerfile,其中包含该镜像的外观规范。
在概述构建上下文时,包含一个 .dockerignore 文件并将其存储在与 Dockerfile 相同的文件夹中也很重要。
此 Docker 功能使用docker run
.
系统检查是否存在这样的文件并应用其例外和忽略规则。这样,你就可以从构建的上下文中删除任何不相关的内容。
利用 Docker 中的多阶段构建功能Docker如何使用更小的镜像?Docker 在其 17.05 版本中引入了多阶段功能。它允许用户将 Dockerfile 分成多个阶段。
每个阶段都以一条FROM
指令开始。所需的工件传递到下一阶段,留下你在最终镜像工件中不需要的内容。
由于该过程仅传输工件的必要组件,因此你不必在每条指令后手动清理。
使用多阶段功能,你可以避免添加不必要的图层,这会对整体镜像大小产生相当大的影响。
避免添加不必要的层以减少 Docker 镜像大小保持Docker镜像较小:Docker 镜像在添加到它的每一层中都会占用更多空间。因此,你拥有的层数越多,镜像所需的空间就越多。
RUN
Dockerfile 中的每条指令都会为你的镜像添加一个新层。这就是为什么你应该尝试在单个RUN
命令中进行文件操作。此外,使用&
&
选项将不同的命令组合成一条指令。
如何减少Docker镜像大小?例如,你可以在一条RUN
指令中更新存储库并安装多个包。要获得清晰、全面的行,请使用反斜杠 ( \ ) 以多行形式输入命令。
除了更新和安装软件包外,你还应该清理 apt 缓存&
&
rm -rf /var/lib/apt/lists/*
以节省更多空间。
RUN apt-get update &
&
apt-get install -y\
[
package-one] \
[
package-two]
&
&
rm -rf /var/lib/apt/lists/*
当心更新和不必要的包和依赖项Docker如何使用更小的镜像?另一种节省空间并保持 Docker 镜像较小的方法是确保你运行的是正在构建的平台的最新版本。
通过拥有最新版本,你可以避免下载无数 rpm 软件包并占用大量空间的大量更新。
注意:如果需要更新,请务必清理rpm缓存并添加
dnf clean all
选项:RUN dnf -y update &
&
dnf clean all
。安装软件包通常还包括下载软件所依赖的依赖项。但是,有时下载也会存储不需要但推荐的包。
此类不需要的软件包会累积并消耗大量磁盘空间。要仅下载主要依赖项,请将
--no-install-recommends
选项添加到安装命令。例如:
RUN apt-get install --no-install-recommends [
package-one]
额外提示:缓存保持Docker镜像较小:虽然这个技巧不会影响 Docker 镜像的整体大小,但它确实有助于更快地构建 Docker。
Docker 通过在本地缓存 Dockerfile 的现有层并使用它更快地重建镜像来加速镜像构建。
如何减少Docker镜像大小?例如,假设你有一个由三层组成的简单 Dockerfile。从该文件构建镜像后,系统会自动缓存这三个层。下次构建镜像时,它会从本地缓存加载。
如果你决定修改镜像并更改其中一个图层,则缓存将不会用于修改图层后的任何内容。
我们建议以提高效率和利用缓存功能的方式对指令进行排序。在 Dockerfile 中尽可能低地放置可能更改的指令。
文章图片
推荐阅读
- Docker CMD与Entrypoint命令有什么区别(应该使用哪个?)
- 如何使用Prometheus监控Kubernetes(分步指南)
- Ghost win8.1下蓝牙经常掉线的处理技巧
- xlueops.exe是啥?Win8.1系统下删除xlueops.exe的技巧
- Win8.1系统下IE脚本出错的原因区分以及处理技巧
- 雨林木风Win8.1恢复开始屏幕IE10图标的具体技巧
- Ghost Win8.1纯净版磁盘已用空间与文件大小不一致
- Ghost Win8.1专业版下清理更新缓存的技巧
- Ghost Win8.1纯净版打开Windows To Go技巧的技巧