2015-07-19 7 views
10

Was ist der große Unterschied zwischen einem Container, der auf dem Andockfenster läuft, und einem eigenständigen Java-Programm, das auf der JVM läuft?Linux Container vs JVM

Ich nehme an, beide laufen direkt auf einem physischen Linux-Server ohne zugrunde liegende Visualisierung.

Antwort

3

Ein Java-Programm, das auf der JVM ausgeführt wird, ist ein einzelner Linux-Prozess. Die JVM wird innerhalb des Prozesses ausgeführt und interpretiert den Java-Bytecode in Ihren Klassen (oder kompiliert ihn).

Ein Docker Container ist schwerer. Es gibt den Docker-Daemon, den Docker-Container, der eigentlich eine virtualisierte Linux-Instanz ist, und dann läuft Ihre JVM darunter.

Ich fand https://docs.docker.com/engine/getstarted/step_one/ und https://docs.docker.com/engine/userguide/eng-image/baseimages/ hilfreich.

+0

Docker Container ist eine gerechte Kontrollgruppe, nein? –

+0

@schtever Beide Links funktionieren nicht mehr. –

1

Sie sind signifikant unterschiedlich. Ein Java-Programm ist ein Prozess auf dem OS-Kernel. Eine JVM läuft, die den Bytecode ausführt, der das Java-Programm ist. Das Java-Programm könnte eine beliebige Menge an Ressourcen verwenden (abhängig von den JVM-Limits) und das Betriebssystem beliebig verwenden.

Ein Andock-Container ist eine Implementierung der Betriebssystemvirtualisierung. Der einfachste Weg, um Container zu verstehen, wäre, dass sie einen unabhängigen Teil des Betriebssystems mithilfe von Virtualisierung bereitstellt. Die Ressourcennutzung des Containers kann begrenzt sein und kann isoliert werden, so dass er keinen Teil des Systems außerhalb des Containers kennt, wie das Dateisystem, das Netzwerk, die Prozesse. Der Kernel bietet bestimmte Funktionen - CGroups und Namespaces, die zum Bereitstellen von Containern verwendet werden.

Verwandte Themen