哪个Docker基础映像应该用于在没有任何额外操作系统的情况下将应用安装在容器中?

我在我的客户操作系统CentOS上运行一个Docker守护进程。 我想在孤立的方式上安装软件服务,我不需要Docker容器中的另一个操作系统映像。

我想拥有一个Docker容器,只有我要安装的软件应用程序的附加二进制文件和库。

Docker中是否有“whiteglove / blank”基础镜像? 我想要一个非常精简的容器,作为我的客户操作系统所提供的起点。 那可能吗 ?

Docker所要求的是不可能的。 每个Docker镜像都有自己的根文件系统,需要安装某种操作系统。

您的select是:

  1. 使用最小的基本图像 ,例如BusyBox图像 。 这将使您获得运行容器的绝对最低限度。

  2. 使用CentOS基础镜像 ,在这种情况下,您的容器将运行相同或非常类似的操作系统。

Docker镜像的原因是因为它们是可移植的。 无论操作系统如何,任何Docker映像都可以在Docker运行的任何位置运行。 这意味着Docker映像必须包含完整的根文件系统和操作系统安装。

如果您需要来自主机操作系统的东西,您可以执行的操作是使用Docker卷共享目录 。 但是,这通常意味着用于安装数据目录,并且仍然需要具有OS的Docker映像。


也就是说,如果你有一个静态链接的二进制文件,它完全没有依赖关系,那么很容易创build一个非常小的图像。 这就是所谓的“微型容器”,Go特别适合生产这些容器。 以下是关于微型容器的进一步阅读以及如何制作微型容器 。


如果你想要的其他选项是容器的资源pipe理部分使用lxc-execute ,如本答案所述 。 但是你也会失去所有其他的好的Dockerfunction。 不幸的是,你要做的只是Docker的构build而已。

从Docker的最佳实践 :

只要有可能,使用当前官方存储库作为您的形象的基础。 我们推荐使用Debian镜像,因为它的控制非常严格,并且保持非常小(目前低于100 MB),同时仍然是一个完整的发行版。

你所要求的是完全反对使用Docker容器的想法。 您不希望在您的GUEST操作系统上有任何可靠性。 如果你做你的Docker不会是可移植的。

当你创build一个容器时,你希望它运行在任何 运行 Docker的机器上。 是CentoOS,Ubuntu,Mac或Microsoft Azure 🙂

理想情况下,基本容器操作系统没有任何优势可以与主机操作系统做任何事情。

对于任何容器,您至less需要一个根文件系统。 这就是为什么您需要使用具有根文件系统的基本映像。 你的想法并不完全违背使用的容器范式; 与虚拟机相反,我们希望容器最小化,不需要太多重复元素,它可以从底层操作系统中利用。