一尘不染

应该使用哪个Docker基本映像在没有任何其他OS的情况下在容器中安装Apps?

docker

我在我的GUEST操作系统CentOS上运行Docker守护程序。我想以一种隔离的方式在其上安装软件服务,并且在Docker容器内不需要其他OS映像。

我想要一个Docker容器,其中仅包含我将要安装的软件应用程序的其他二进制文件和库。

我可以使用Docker中的“ whiteglove / blank”基础映像吗?我想要一个非常精简的容器,以此作为GUEST OS必须提供的起点。那可能吗


阅读 306

收藏
2020-06-17

共1个答案

一尘不染

您想要的是使用Docker不可能即用的。每个Docker映像都有其自己的根文件系统,该根文件系统需要安装某种操作系统。

您的选择是:

  1. 使用最小的基本映像 ,例如BusyBox映像。这将为您提供使容器运行所需的绝对最小值。

  2. 使用 CentOS基本映像,在这种情况下,您的容器将运行相同或非常相似的OS。

Docker映像之所以这样,是因为它们具有可移植性。任何Docker映像都旨在在Docker运行的任何位置运行,而与操作系统无关。这意味着Docker映像必须包含整个根文件系统和OS安装。

如果您需要主机操作系统提供的服务,可以使用Docker卷共享目录。但是,这通常意味着要用于挂载数据目录,并且仍然需要具有操作系统的Docker映像。


就是说,如果您有一个绝对没有依赖项的静态链接二进制文件,那么创建一个非常小的图像将变得很容易。这就是所谓的“微容器”,特别是Go非常适合生产这些容器。这是有关微容器及其生产方法的进一步阅读


另一种选择,你可以看看,如果你想要的是容器的资源管理部被使用lxc-execute,因为在这个答案描述。但是您也会失去所有其他不错的Docker功能。不幸的是,您尝试做的不是构建Docker的目的。

2020-06-17