【问题标题】:Why install a Linux dist inside a Docker container?为什么要在 Docker 容器中安装 Linux dist?
【发布时间】:2015-09-29 19:45:48
【问题描述】:

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

那么为什么我看到很多 Docker 文件实际上在容器内安装了一个 distrib,这难道不违背保持轻量级的目标吗?

例如,这里有一个 Docker 文件,开头为:

    FROM debian:jessie

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

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

可以不绕过这一步,直接安装在容器中的软件使用安装容器的下划线Linux dist吗?

【问题讨论】:

  • 另一个例子在这里phusion.github.io/baseimage-docker
  • 如果您的软件包含一个没有外部依赖的静态二进制文件,那就继续吧! (我实际上至少在一种情况下会这样做;但是,这种情况很少见)。

标签: macos docker docker-toolbox


【解决方案1】:

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

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

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

另外,请记住,打包整个发行版不一定会浪费大量资源:

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

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

【讨论】:

    猜你喜欢
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 2019-01-24
    • 2019-05-01
    • 1970-01-01
    • 2017-11-11
    • 1970-01-01
    相关资源
    最近更新 更多