Docker镜像的区别
@ 归零 | 星期二,三月 22 日,2022 年 | 1 分钟阅读 | 更新于 星期二,三月 22 日,2022 年

我们在编写Dockerfile时,选择基础镜像时会困惑,带有标签Alpine、Slim、Stretch、Buster等的这些标准镜像到底有什么不同,该如何选择作为我们的基础镜像呢,如果你有这样的困惑,本文会给你答案。

full official image

以Go和Python为例, 如下镜像是官方完整镜像,这些镜像是基于最新的稳定Debian系统发行版,如果我们想快速启动和运行项目,并且不关心镜像的大小,那么完整镜像是最好的选择。

  • golang:1.18
  • python:3.9.3

buster/stretch/jessie

带有stretch、buster或jessie标签的镜像是基于不同Debian发行版的代号。“buster”是Debian 10.4 的代号,“stretch”是所有版本9变种的代号,“jessie”是所有版本8变种的代号。

slim

slim的镜像是完整镜像的配对版本。这个镜像通常只安装运行特定工具所需的最小包。以python为例,就是运行python的最小包。

alpine

alipine镜像基于alpine linux项目,这是一个专门为容器内部使用而构建的操作系统。在很长一段时间,这些是最受欢迎的镜像,因为很小。如果考虑到空间问题,强烈推荐使用此镜像。 然而,一些团队正在弃用alpine镜像,因为这些镜像可能会导致难以调试的兼容性问题。

总结

选择镜像的通用准则:

  • 如果我需要快速启动并运行项目,没有空间限制,并且没有时间进行太多测试,那么我就使用完整的标准镜像。

  • 如果空间是一个问题,并且只需要最小的包来运行特定的语言,如python,我会选择slim

  • 对于一些有时间彻底测试的项目,并且对镜像大小有要求,可以使用alpine镜像。但是要注意,这可能会导致更长的构建时间和不确定的bug。

最后,滚动到特定镜像的DockerHub页面底部,阅读有关选择镜像的建议。

© 2014 - 2022 Lionel's Blog

Powered by Hugo with theme Dream.