linux - 我应该使用哪个 docker OS 基础镜像?

标签 linux amazon-web-services docker dockerfile docker-machine

<分区>

我正在创建一个基于特定操作系统镜像的容器,由于大小和包等方面的考虑,它有其特殊性。

在我的例子中,容器将在 AWS 中运行,我可以使用任何 Linux 发行版部署它,这引出了我的问题。

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

最佳答案

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

  • 跨 IaaS:您可以在每个 IaaS(GCP、Azure)中使用它,无需额外费用。
  • 大小:基于 Alpine 的图像大小是基于其他流行基础图像(Debian、Ubuntu 或 CentOS、Amazon Linux 等)的类似容器的 1/10 的情况并不少见。您可以用它做一个基准测试。
  • 效率: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 个漏洞。

更深入的讨论:

关于linux - 我应该使用哪个 docker OS 基础镜像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57515584/

相关文章:

linux - 如何获取U-Boot调试符号

linux - 从字符串中提取文件路径

c - UDP服务器套接字IP分配

amazon-web-services - 是否可以从 http(javascript 客户端)直接向 Amazon SQS 发送请求?

.net - Docker 和 Octopus Deploy 有什么区别

docker - 如何在更新的Docker中使用microk8?

linux - bash中带空格的回调脚本

amazon-web-services - 将公共(public)静态 ipv4 地址添加到 AWS 负载均衡器

amazon-web-services - AWS Data Pipeline S3 到 DynamoDB JSON 错误

ruby - 在 docker 容器中请求特定的 ubuntu 版本