Alpine大小和Docker层[关闭]

问题描述 投票:3回答:2

我正在公司设计应用程序的容器化。在查看容器时,我看到了很多有关Alpine的讨论。

讨论的基础围绕着阿尔卑斯山的大小。 Alpine比其他Linux发行版小得多。与大小为188 MB的Ubuntu相比,Alpine的大小为5 MB(非常小)。

但是令我感到困惑的是,为什么这真的很重要。包含操作系统的docker层只需要下载到机器一次(假设所有容器都使用相同的基本映像)。

例如,假设我有50个应用程序,每个应用程序将放入一个容器中。它们每个都需要50 MB,我每个都在docker上运行。

  • [在Alpine上运行,我的50个容器化应用程序将占用2,505 MB的磁盘空间。
  • 在Ubuntu上运行,这50个应用程序将占用2688 MB的磁盘空间。

仅相差7%。磁盘空间不是很昂贵。因此,Ubuntu能够运行所有容器所需的额外183 MB似乎并不重要。

但是Alpine确实很受欢迎。所以我不得不认为我缺少了一些东西。也许它使用更少的内存?还是更快?

Alpine Linux发行版中的哪些功能导致Docker选择它作为其主要容器平台?

docker containers alpine
2个回答
2
投票

取决于您使用的编程语言;对于Python,我觉得Alpine是个坏主意:

  1. 没有二进制轮子,因此您需要重新编译所有内容,这意味着您需要安装编译器工具链,从而使较小的图像有些争议。

  2. Alpine的替代libc musl,具有细微差异的历史,会引起令人讨厌的错误,例如一次,DNS无法在WeWork办事处的Minikube中工作(!),因为当时WeWork的DNS设置很不稳定,与公认的符合RFC的决策程序进行了严重的交互。

(较长版本:https://pythonspeed.com/articles/base-image-python-docker-images/

第一个问题与Go无关,而第二个问题,Go大多绕过libc并直接执行syscall。因此,对于Go来说,我认为基本上没问题。


0
投票

主要原因是大多数开发人员使用容器。通常,许多使用docker迁移微服务架构的人都非常需要模块化。因此,许多公司开始使用容器来使它们能够扩展其应用程序并以分布式方式对其进行管理。 这也意味着他们也将它们分割在机器之间,它更便宜并且更易于管理。

使用较小图像的好处是,您希望将这50个进程拆分为不同的容器。将一个docker映像用于多个进程通常不是一个好习惯。看看这个here

所以总结一下阿尔卑斯山更受欢迎,因为它的图像应该代表一个应用程序,因此具有可调用性和许多其他好处。

© www.soinside.com 2019 - 2024. All rights reserved.