2017-06-21 60 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