Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在没有任何附加操作系统的情况下,应该使用哪个Docker base映像在容器中安装应用程序?_Docker - Fatal编程技术网

在没有任何附加操作系统的情况下,应该使用哪个Docker base映像在容器中安装应用程序?

在没有任何附加操作系统的情况下,应该使用哪个Docker base映像在容器中安装应用程序?,docker,Docker,我正在我的来宾操作系统CentOS上运行Docker守护程序。我想以一种隔离的方式在上面安装软件服务,我不需要在Docker容器中安装另一个OS映像 我想要一个Docker容器,其中只包含我要安装的软件应用程序的附加二进制文件和库 Docker中是否有我可以使用的“白手套/空白”基本图像?我想要一个非常精简的容器,将我的来宾操作系统提供的内容作为起点。这可能吗?你所要求的是不可能在Docker的开箱即用的。每个Docker映像都有自己的根文件系统,需要安装某种操作系统 你的选择是: 使用最小基本

我正在我的来宾操作系统CentOS上运行Docker守护程序。我想以一种隔离的方式在上面安装软件服务,我不需要在Docker容器中安装另一个OS映像

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


Docker中是否有我可以使用的“白手套/空白”基本图像?我想要一个非常精简的容器,将我的来宾操作系统提供的内容作为起点。这可能吗?

你所要求的是不可能在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容器中没有虚拟化。容器运行在主机操作系统内核之上的用户空间中。因此,容器和主机操作系统将共享同一个内核

    因此,总结一下:

  • 将主机操作系统视为windows或mac
  • Docker安装后位于运行在这些主机操作系统上的linux虚拟机中
  • docker容器中的基本linux映像然后将此linux VM计算机用作主机操作系统,而不是本机windows或mac
  • 在linux上,docker容器中的基本linux映像直接使用主机操作系统,即linux本身,而没有任何虚拟化
  • Docker容器中的基本映像只是linux发行版程序和工具的快照
  • 基本映像使用主机内核(这三种情况下都是linux)
  • 因此,容器内没有虚拟化,但docker可以使用单亲linux虚拟机在容器内运行自己[docker引擎]
  • 结论:
    当您在docker内安装基本映像时,容器内不会安装其他操作系统,只会创建具有最少程序和工具的文件系统副本。

    选择不同的基本映像操作系统有什么优点或缺点?这只是个人喜好吗?基本映像操作系统是否在Docker容器中提供了不同的实用程序?@cmcdragokai,这也是应用程序需求的问题。如果您的容器应用程序需要特定操作系统中的特定库,那么您应该明确使用该操作系统。如果您的应用程序可以在通用Linux发行版和发行版上无缝工作,那么您可以选择本线程中指定的最小操作系统(例如BusyBox)。通常,这是一个标准化您部署的容器类型以及您打算如何专门支持这些OSs的问题