2017-06-21 97 views
0

新建泊坞窗...泊坞窗集装箱图书馆复制

需要一些帮助来澄清基本概念集装箱...

据我所知,每个集装箱将包括应用程序。代码,库,运行时,cfg文件等。 如果我为N个应用程序运行N个容器。和每个应用程序。恰巧使用了一组相同的库。这是否意味着我的主机系统最终会拥有N-1个重复库?

虽然容器降低了VM虚拟化方法中的操作系统开销,但我只是想知道容器方法在资源优化方面是否仍有提升空间。

由于 米拉

+1

https://stackoverflow.com/questions/16047306/how-is-docker-different-from-a-normal-virtual-machine – johnharris85

回答

0

容器在运行时实例,通过图像定义的。 Docker使用unionfs将多个层合并在一起,以创建在容器中看到的根文件系统。构建图像的每一步都是一个图层。容器本身有一个写入时复制层,它只附着在容器上,以便它看到它自己的变化。因此,docker能够将正在运行的映像的多个实例指向unionfs图层的相同映像文件,它在启动另一个容器时从不复制该图层,它们都指向相同的文件系统字节。简而言之,如果您有一张1 gig的图片,并且使用同一张图片旋转了100个容器,那么磁盘上只会是1个gig图片,再加上在这100个容器中所做的任何更改,而不是100个演出。

enter image description here

+0

感谢您的答复。这是有用的信息。不过,我想知道lib。在使用不同图像的情况下重复。例如,如果我在Python应用程序中使用“导入X”创建图像1。和另一个图像2,其中还包括另一个Python应用程序中的“导入X”。然后,我将这两个图像(因此是两个应用程序)都运行在同一台主机上。主机最终会在每个容器内两次导入“X”吗?再次感谢。 –

+0

@ b.mira创建图像的每一层都有缓存。如果同一命令已经在同一先前层上运行,则docker将使用它的图层缓存,而不是创建新图层,即使图层最初是由其他图像创建的。你可以通过创建你自己的基础图像和其中的所有通用库来更加明确,并且建立你的其他图像。 – BMitch