为什么要在 Docker 容器中安装 Linux dist?

Why install a Linux dist inside a Docker container?

我开始理解 Docker 并且据我所知,docker 容器在安装容器的默认 Linux 分区上运行 - 在我的例子中它是Mac OS docker 工具箱附带的 X 轻量级 dist。

那么为什么我看到很多 Docker 文件实际上在容器中安装了一个 distrib,这不是破坏了保持轻便的目的吗?

例如,这是一个 Docker 开头的文件:

    FROM debian:jessie

所以这是在基于 Debian 的容器中安装 Docker 映像。

例如,我也看到许多其他人使用 Ubuntu。

能不能绕过这一步,直接安装在容器里的软件使用带下划线的Linux安装容器的dist?

因为,就像物理机或虚拟机一样,如果没有分发,设置用户空间环境将是一件痛苦的事情。

IMO,这是 docker 的强大优势之一:为特定应用选择最合适的发行版。

容器化应用程序可能会有依赖项。要安装这些依赖项,有一个包管理器会很有帮助。许多发行版默认还包含一些依赖项,这使得容器创建者(应用程序)选择自己的发行版是个好主意。

此外,请记住打包整个发行版并不一定会浪费很多资源:

  • Docker 图像存储为相对于公共基线的增量,这意味着基于 debian:jessie 的两个图像可以为基线重复使用相同的数据。
  • 分发实际上并没有那么大,因为它们通常是完整系统映像的缩小版本。

如果您真的想创建一个最小的图像,请尝试 busybox。但是,对于任何真实世界的容器镜像,您经常会发现自己的增长速度非常快。