我应该使用哪个 docker 操作系统基础映像?



我正在创建一个基于特定操作系统映像的容器,因为大小和包以及其他考虑因素有其特殊性。

就我而言,容器将在 AWS 中运行,我可以将其与任何 Linux 发行版一起部署,这导致了我的问题。

哪个 Linux 发行版更适合作为我的映像的基础?考虑到我没有任何需要满足的依赖关系,任何概述都将不胜感激。

Alpine Linux,因为您可以在跨 iaa、大小、效率和安全性方面拥有优势 - 一个有趣的点是docker 社区正在将他们的映像转移到基于 Alpine 的。

  • Cross-IaaS:您可以在每个IaaS(GCP,Azure(中使用它,无需额外费用。
  • 大小:基于 Alpine 的映像的大小是基于其他流行基础映像(Debian、Ubuntu 或 CentOS、Amazon Linux 等(的类似容器大小的 1/10,这种情况并不少见。你可以用它做一个基准测试。
  • 效率:Alpine基于平纹细布(这是一个更干净的代码(而不是glibc。干净和更简单的代码通常更快,你可以看到这个讨论。
  • 安全性:由于Alpine具有最少的数据包核心,因此可能存在漏洞的东西较少。这就是为什么它如此之小 - 它的目的是安全性。此外,musl 的安全足迹(和漏洞公告的数量(明显低于 glibc。

如果你想自己做一些测试,你可以使用LayeredInsight(Image Scanner(和一个简单的php包:php:7.2.0 vs php:7.2.0-alpine3.6,Alpine版本有0个漏洞。

更深入的讨论:

  • https://www.quora.com/Should-I-use-Alpine-based-docker-images-for-production
  • https://nickjanetakis.com/blog/the-3-biggest-wins-when-using-alpine-as-a-base-docker-image

使用 Alipine 作为 docker 文件中的 bas 映像,并在其上构建以生成要用于运行容器的自己的映像。

相关内容

最新更新