Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.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容器库复制_Docker_Containers_Virtualization - Fatal编程技术网

Docker容器库复制

Docker容器库复制,docker,containers,virtualization,Docker,Containers,Virtualization,新来的码头工人 需要一些帮助来澄清基本的容器概念 好吧,每个容器都会包含应用程序。代码、库、运行时、cfg文件等。 如果我要为N个应用程序运行N个容器。和每个应用程序。碰巧使用了一组相同的库。这是否意味着我的主机系统最终会有N-1个重复库 虽然容器减少了虚拟化VM方法中的操作系统开销,但我只是想知道容器方法在资源优化方面是否还有改进的余地 谢谢 Mira容器是由映像定义的运行时实例。Docker使用unionfs将多个层合并在一起,以创建您在容器中看到的根文件系统。构建图像的每个步骤都是一个层。

新来的码头工人

需要一些帮助来澄清基本的容器概念

好吧,每个容器都会包含应用程序。代码、库、运行时、cfg文件等。 如果我要为N个应用程序运行N个容器。和每个应用程序。碰巧使用了一组相同的库。这是否意味着我的主机系统最终会有N-1个重复库

虽然容器减少了虚拟化VM方法中的操作系统开销,但我只是想知道容器方法在资源优化方面是否还有改进的余地

谢谢
Mira

容器是由映像定义的运行时实例。Docker使用unionfs将多个层合并在一起,以创建您在容器中看到的根文件系统。构建图像的每个步骤都是一个层。容器本身有一个写上拷贝层,它只附加在容器上,这样它就可以看到自己的更改。因此,docker能够将一个运行图像的多个实例指向unionfs层的相同图像文件,当您旋转另一个容器时,docker从不复制该层,它们都指向相同的文件系统字节

简言之,如果您有一个1G映像,并使用相同的映像启动100个容器,那么磁盘上只有1G映像加上在这100个容器中所做的任何更改,而不是100 gig


谢谢您的回复。这是有用的信息。然而,我想知道自由党。在使用不同图像的背景下进行复制。例如,如果我在Python应用程序中创建一个带有“import X”的图像1。和另一个图像2,其中还包括另一个Python应用程序中的“导入X”。然后我在同一台主机上运行这两个图像(因此这两个应用程序)。主机会在每个容器中导入“X”两次吗?再次感谢。@b.mira在创建图像的每一层时都有缓存。如果相同的命令已在相同的前一层上运行,docker将使用其层缓存,而不是创建新层,即使这些层最初是由另一个图像创建的。通过创建包含所有公共库的自己的基础映像,并在此基础上构建其他映像,您可以更加明确。