As far as I know, Linux containers are those that run on a shared OS kernel using a virtualization software. Is there any correlation to Dalvik VM which runs multiple apps on top it?
No, they're different types of virtualization.
- The Dalvik VM works like an interpreter or just-in-time compiler: installed apps consist of Dalvik bytecode, but the CPU only knows how to run ARM or x86 machine code, so the DVM reads the Dalvik bytecode instructions and translates them into equivalent ARM or x86 instructions to make the app run. It's similar to an emulator, except that term is usually only applied to instruction sets that have been implemented natively in hardware. (There are no CPUs that directly understand Dalvik bytecode.) The Java VM and .NET CLR work similarly, and this explanation applies to those as well.
- Linux container systems, like Docker and LXC, aren't involved at all in the actual running of programs; they just set up boundaries to isolate programs from each other and control how they can interact. The programs you run in a container are normal Linux programs that could also run on a normal Linux system without containers.
In short, containers virtualize the software environment surrounding a program, while a VM like Dalvik virtualizes the computer itself.