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.

  • Why do ping packets not reach a custom gateway in docker?
  • Creating an Azure Container Service with default settings fails to deploy
  • pg_dump in docker: “could not open output file” “protocol error”
  • Docker Nginx with Angular JS - Load Static CSS, Images, JS with dynamic url
  • Docker with GUI application
  • Unable to create spring boot initialzr project (A org.springframework.web.client.HttpClientErrorException exception has occurred)
  • DB2 docker Shared memory segments cannot be allocated
  • ECONNREFUSED 127.0.0.1:3306 to mysql container inside jenkins
  • Why doesn't my newly-created docker have a digest?
  • Installing mongo client in a Docker container
  • Docker exec in bash script
  • dumb-init No such file or directory
  • 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.