1

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

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

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

    FROM debian:jessie

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

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

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

4

1 回答 1

1

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

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

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

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

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

如果您真的想创建一个最小的图像,请尝试busybox. 但是,您经常会发现自己对于任何真实世界的容器映像都很快超出了它。

于 2015-09-29T20:13:54.970 回答