我应该使用哪个 docker OS 基础图像?
Which docker OS base image should I use?
我正在创建一个基于镜像的容器,具体操作系统有其特殊性,因为大小和包等方面的考虑。
在我的例子中,容器将在 AWS 中 运行,我可以使用任何 Linux 分布进行部署,这引出了我的问题。
哪个 Linux 发行版更适合我的形象?考虑到我没有任何依赖需要满足,任何概述将不胜感激。
Alpine Linux,因为您可以在跨 iaas、大小、效率和安全性方面具有优势 - 一个有趣的地方是 docker 社区正在将他们的图像移动到基于 Alpine.
- 跨 IaaS:您可以在每个 IaaS(GCP、Azure)中使用它,无需额外费用。
- 大小:基于 Alpine 的镜像大小是基于其他流行基础镜像(Debian,Ubuntu,或 CentOS,亚马逊 Linux,等等)。你可以用它做一个基准测试。
- 效率:Alpine 基于 musl(这是一种更简洁的代码)而不是 glibc。干净简单的代码通常更快,你可以看到 this discussion.
- 安全性:由于Alpine的数据包核心最少,因此可能存在漏洞的东西较少。这就是为什么它如此之小——它的构建目的是为了安全。此外,musl 的安全足迹(和漏洞公告的数量)明显低于 glibc。
如果你想自己做一些测试,你可以使用 LayeredInsight(Image Scanner) 和一个简单的 php 包:php:7.2.0 vs php:7.2.0- alpine3.6,Alpine版本0个漏洞
更深入的讨论:
在您的 docker 文件中使用 Alipine 作为基础镜像,并在其基础上构建以生成您想要用于 运行 容器的镜像。
我正在创建一个基于镜像的容器,具体操作系统有其特殊性,因为大小和包等方面的考虑。
在我的例子中,容器将在 AWS 中 运行,我可以使用任何 Linux 分布进行部署,这引出了我的问题。
哪个 Linux 发行版更适合我的形象?考虑到我没有任何依赖需要满足,任何概述将不胜感激。
Alpine Linux,因为您可以在跨 iaas、大小、效率和安全性方面具有优势 - 一个有趣的地方是 docker 社区正在将他们的图像移动到基于 Alpine.
- 跨 IaaS:您可以在每个 IaaS(GCP、Azure)中使用它,无需额外费用。
- 大小:基于 Alpine 的镜像大小是基于其他流行基础镜像(Debian,Ubuntu,或 CentOS,亚马逊 Linux,等等)。你可以用它做一个基准测试。
- 效率:Alpine 基于 musl(这是一种更简洁的代码)而不是 glibc。干净简单的代码通常更快,你可以看到 this discussion.
- 安全性:由于Alpine的数据包核心最少,因此可能存在漏洞的东西较少。这就是为什么它如此之小——它的构建目的是为了安全。此外,musl 的安全足迹(和漏洞公告的数量)明显低于 glibc。
如果你想自己做一些测试,你可以使用 LayeredInsight(Image Scanner) 和一个简单的 php 包:php:7.2.0 vs php:7.2.0- alpine3.6,Alpine版本0个漏洞
更深入的讨论:
在您的 docker 文件中使用 Alipine 作为基础镜像,并在其基础上构建以生成您想要用于 运行 容器的镜像。