Какая большая разница между контейнером, работающим поверх докеров и автономной программой Java, запущенной поверх JVM?
Я предполагаю, что оба они работают непосредственно на физическом сервере Linux без базовой визуализации.
Какая большая разница между контейнером, работающим поверх докеров и автономной программой Java, запущенной поверх JVM?
Я предполагаю, что оба они работают непосредственно на физическом сервере Linux без базовой визуализации.
Программа java, работающая поверх JVM, будет единственным процессом Linux. JVM запускается внутри процесса и интерпретирует (или компилирует) байт-код Java в ваших классах.
Контейнер для докеров больше тяжеловес. Там демон docker, контейнер докеров, который на самом деле является виртуализированным экземпляром Linux, а затем ваша JVM работает под этим.
Я нашел https://docs.docker.com/engine/getstarted/step_one/ и https://docs.docker.com/engine/userguide/eng-image/baseimages/ полезно.
Они значительно отличаются. Java-программа - это процесс в ядре ОС. Работает JVM, которая выполняет байт-код, который является программой java. Программа java может использовать любое количество ресурсов (в зависимости от ограничений JVM) и использовать операционную систему любым способом, который ей нравится.
Контейнер-докер - это реализация виртуализации операционной системы. Самый простой способ понять контейнеры будет заключаться в том, что он обеспечивает независимый срез операционной системы, использующий виртуализацию. Использование ресурсов контейнера может быть ограничено и может быть изолировано, так что оно не знает какой-либо части системы вне контейнера, подобно файловой системе, сети, процессов. Ядро предоставляет определенные функции - CGroups и пространства имен, которые используются для предоставления контейнеров.