Docker containers give you a reproducible, dependency-free environment for running TornadoVM workloads — no manual driver installation, no JDK version mismatches. The TornadoVM team maintains pre-built images on Docker Hub under theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/Deepak-Sangle/TornadoVM/llms.txt
Use this file to discover all available pages before exploring further.
beehivelab organization, covering NVIDIA GPUs and Intel Integrated Graphics with both OpenJDK and GraalVM runtimes. Because containers isolate the filesystem but not the kernel, GPU access requires passing the physical device through from the host; NVIDIA and Intel each have their own mechanism for doing so.
Available Official Images
All official TornadoVM images are published at https://github.com/beehive-lab/docker-tornado and pulled from Docker Hub under thebeehivelab namespace.
NVIDIA + OpenJDK 17
beehivelab/tornadovm-nvidia-openjdk:latestLatest TornadoVM for NVIDIA GPUs, based on OpenJDK 17.NVIDIA + GraalVM
beehivelab/tornadovm-nvidia-graalvm:latestLatest TornadoVM for NVIDIA GPUs, based on GraalVM JDK 17.Intel iGPU + OpenJDK 17
beehivelab/tornadovm-intel-openjdk:latestTornadoVM for Intel Integrated Graphics and Intel CPUs via OpenCL.Intel iGPU + GraalVM
beehivelab/tornadovm-intel-graalvm:latestTornadoVM for Intel Integrated Graphics, based on GraalVM JDK 17.Images have been tested on CentOS ≥ 7.4 and Ubuntu ≥ 16.04. All images include the
docker-tornado runner scripts that wrap the tornado command for convenience.NVIDIA GPU Setup
Prerequisites: NVIDIA Container Toolkit
NVIDIA GPU passthrough requires the NVIDIA Container Toolkit (formerlynvidia-docker2) to be installed on the host machine. This registers a custom Docker runtime (nvidia) that exposes GPU devices inside containers.
Install NVIDIA Container Toolkit on the host
Follow the official guide at https://github.com/NVIDIA/nvidia-docker for your Linux distribution. After installation, verify with:You should see your GPU listed in the
nvidia-smi output.Clone the docker-tornado runner scripts
The
docker-tornado repository contains convenience scripts that mount your working directory and forward the GPU:Intel Integrated Graphics Setup
Prerequisites: Intel OpenCL Driver
The
beehivelab/tornadovm-intel-openjdk image requires the Intel OpenCL compute runtime to be accessible. More information: https://github.com/intel/compute-runtime.Common Container Options
Thetornado command inside the container is an alias for java with all TornadoVM flags pre-configured. You can pass any standard Java or TornadoVM option through it.
Building a Custom TornadoVM Docker Image
If you need a custom build — for example, a specific backend combination or a different JDK version — you can extend one of the official base images.Key Environment Variables Inside Containers
Environment variables reference
Environment variables reference
| Variable | Purpose | Typical Value |
|---|---|---|
TORNADOVM_HOME | Root of the TornadoVM installation | /usr/local/tornadovm |
JAVA_HOME | JDK used by TornadoVM | /usr/local/tornadovm/etc/dependencies/TornadoVM-graal-jdk-21/... |
PATH | Must include $TORNADOVM_HOME/bin/sdk/bin | Set in setvars.sh |
LD_LIBRARY_PATH | Native GPU backend libraries | $TORNADOVM_HOME/bin/sdk/lib |
TORNADO_SDK | Path to the SDK directory | $TORNADOVM_HOME/bin/sdk |
Limitations of Containerized GPU Access
- Driver version coupling: The NVIDIA driver version inside the container must be compatible with the driver installed on the host. Mismatches cause runtime failures.
- No GPU virtualisation: Docker does not virtualise GPUs. The
--gpusflag exposes a real physical device — if another container or the host process is using it, you may see contention. - Intel iGPU device files: Intel integrated GPU access typically requires passing
/dev/dridevice files with--device=/dev/driand adding the container user to thevideogroup. - OpenCL ICD loader: The container must have the OpenCL ICD loader (
libOpenCL.so) and a valid.icdfile in/etc/OpenCL/vendors/. The official images handle this, but custom images must replicate it. - Metal (macOS) not supported: Apple’s Metal backend cannot run inside Linux Docker containers; it requires macOS with Apple Silicon or AMD GPU hardware.