在没有任何附加操作系统的情况下,应该使用哪个Docker base映像在容器中安装应用程序?
我正在我的来宾操作系统CentOS上运行Docker守护程序。我想以一种隔离的方式在上面安装软件服务,我不需要在Docker容器中安装另一个OS映像 我想要一个Docker容器,其中只包含我要安装的软件应用程序的附加二进制文件和库在没有任何附加操作系统的情况下,应该使用哪个Docker base映像在容器中安装应用程序?,docker,Docker,我正在我的来宾操作系统CentOS上运行Docker守护程序。我想以一种隔离的方式在上面安装软件服务,我不需要在Docker容器中安装另一个OS映像 我想要一个Docker容器,其中只包含我要安装的软件应用程序的附加二进制文件和库 Docker中是否有我可以使用的“白手套/空白”基本图像?我想要一个非常精简的容器,将我的来宾操作系统提供的内容作为起点。这可能吗?你所要求的是不可能在Docker的开箱即用的。每个Docker映像都有自己的根文件系统,需要安装某种操作系统 你的选择是: 使用最小基本
Docker中是否有我可以使用的“白手套/空白”基本图像?我想要一个非常精简的容器,将我的来宾操作系统提供的内容作为起点。这可能吗?你所要求的是不可能在Docker的开箱即用的。每个Docker映像都有自己的根文件系统,需要安装某种操作系统 你的选择是:
这就是说,如果您有一个静态链接的二进制文件,它绝对没有依赖项,那么创建一个非常小的映像就变得很容易了。这被称为“微容器”,尤其是Go非常适合生产这些容器。这是
如果您只需要容器的资源管理部分,那么您还可以研究另一个选项。但你也失去了所有其他优秀的Docker功能。不幸的是,您试图做的并不是Docker的初衷。来自Docker的: 尽可能使用当前的官方存储库作为图像的基础。我们推荐使用Debian映像,因为它的控制非常严格,并且非常小(目前小于100 mb),同时仍然是一个完整的发行版 你所要求的是完全反对使用Docker容器的想法。您不希望在来宾操作系统上有任何可靠性。如果你这样做,你的码头工人将无法携带 创建容器时,希望它在运行Docker的任何计算机上运行。无论是CentoOS、Ubuntu、Mac还是Microsoft Azure:)
理想情况下,基本容器操作系统不必与主机操作系统进行任何操作。对于任何容器,您至少需要一个根文件系统。这就是为什么需要使用具有根文件系统的基本映像。你的想法并不完全违背容器的使用模式;与虚拟机相反,我们希望容器最小,没有太多可从底层操作系统利用的重复元素。根据Rohan Singh的链接,我发现了一些相关信息,这些信息通常并不矛盾,但与问题的核心ide有关: 所有Docker映像的基础映像都是该映像。它基本上什么都没有。这听起来可能毫无用处,但如果您可以像使用Go或C一样将应用程序编译为零依赖的静态二进制文件,那么您实际上可以使用它为应用程序创建尽可能最小的映像
据我所知,docker,当您使用基本映像时,实际上不会安装额外的操作系统 它只是一种预装程序的目录结构,或者我们可以说是一个实际的基本映像操作系统的文件系统 在大多数情况下,当在mac和windows上使用时,docker本身[docker引擎]在linux虚拟机上运行 如果您与虚拟化相混淆,Docker容器中没有虚拟化。容器运行在主机操作系统内核之上的用户空间中。因此,容器和主机操作系统将共享同一个内核 因此,总结一下:
当您在docker内安装基本映像时,容器内不会安装其他操作系统,只会创建具有最少程序和工具的文件系统副本。选择不同的基本映像操作系统有什么优点或缺点?这只是个人喜好吗?基本映像操作系统是否在Docker容器中提供了不同的实用程序?@cmcdragokai,这也是应用程序需求的问题。如果您的容器应用程序需要特定操作系统中的特定库,那么您应该明确使用该操作系统。如果您的应用程序可以在通用Linux发行版和发行版上无缝工作,那么您可以选择本线程中指定的最小操作系统(例如BusyBox)。通常,这是一个标准化您部署的容器类型以及您打算如何专门支持这些OSs的问题