2015-07-19 75 views
10

在Docker上運行的容器與運行在JVM上的自包含Java程序之間的區別是什麼?Linux容器vs JVM

我假設兩者都直接在物理linux服務器上運行,沒有底層可視化。

回答

3

在JVM之上運行的Java程序將是一個單獨的Linux進程。 JVM在進程內運行,並解釋(或編譯)類中的Java字節碼。

碼頭集裝箱更重量級。 docker守護進程是docker容器,它實際上是一個虛擬化的Linux實例,然後是你的JVM。

我發現https://docs.docker.com/engine/getstarted/step_one/https://docs.docker.com/engine/userguide/eng-image/baseimages/有幫助。

+0

碼頭集裝箱是一個正義的控制組,不是嗎? –

+0

@schtever這兩個鏈接不再有效。 –

1

它們有顯着不同。 Java程序是OS內核上的一個進程。 JVM正在運行,它執行java程序的字節碼。 Java程序可以使用任何數量的資源(取決於JVM限制),並以任何喜歡的方式使用操作系統。

碼頭集裝箱是操作系統虛擬化的一個實現。理解容器的最簡單方法是使用虛擬化爲操作系統提供一個獨立的部分。容器的資源使用情況可能受到限制,並且可能被隔離,以致於它不知道容器外部的系統的任何部分,如文件系統,網絡和進程。內核提供了特定的功能 - 用於提供容器的CGroups和Namespaces。