Linux Container vs JVM

What’s the big difference between a container running on top of docker and a self contained Java program running on top of the JVM?

I assume both are running directly on a physical linux server without underlying visualization.

  • What is different of Config and ContainerConfig of docker inspect?
  • Invalid US-ASCII character using SASS
  • Docker containers cannot connect through overlay networks
  • How to enable a Spark-Mesos job to be launched from inside a Docker container?
  • Docker security isolation what does it mean exactly?
  • Running Wildfly Swarm with KeyCloak on docker image
  • Why orientDB connection to localhost of docker is refused
  • Pulling image from Amazon ECR using docker-java
  • Error response from daemon: Container f88566c370dd is not running
  • Faster deploy of a docker image?
  • Ubuntu 14.04 volume disk full due to docker data
  • Apache/php return full php error track description
  • 2 Solutions collect form web for “Linux Container vs JVM”

    A java program running on top of the JVM will be a single Linux process. The JVM runs inside the process, and interprets (or compiles) the Java byte code in your classes.

    A docker container is more heavyweight. There’s the docker daemon, the docker container, which is actually a virtualized Linux instance, and then your JVM running under that.

    I found https://docs.docker.com/engine/getstarted/step_one/ and https://docs.docker.com/engine/userguide/eng-image/baseimages/ helpful.

    They are significantly different.
    A java program is a process on the OS kernel. A JVM is running, which executes the bytecode that is the java program. The java program could use any amount of resources (depending upon the JVM limits), and use the operating system in any way it likes.

    A docker container is an implementation of Operating System Virtualization. The easiest way to understand containers would be that it provides an independent slice of the operating system using virtualization. The container’s resource usage can be limited and can be isolated so that it is unaware of any part of the system outside the container, Like the Filesystem, the network, the processes. The kernel provides specific features – CGroups and Namespaces which are used to provide containers.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.