GraalVM Community Edition Container Images

To support container-based development, GraalVM Community Edition container images are published in the GitHub Container Registry.

Repositories

There are different GraalVM Community Edition container images provided depending on the architecture and the Java version, and have -community as part of their names. These are: native-image-community, jdk-community, truffleruby-community, nodejs-community, and graalpy-community. The regular container images are multi-arch, for x64 and AArch64 processor architectures, with a choice of Oracle Linux versions 8, 9, and 10. The muslib container images are available for x64 only.

GraalVM is installed in /usr/lib64/graalvm/graalvm-community-java<$FeatureVersion>/ where <$FeatureVersion> is 17, 21, 25, 25i1, and so on. For instance, GraalVM 25.1 is installed in /usr/lib64/graalvm/graalvm-community-java25i1/. All binaries, including java, javac, native-image, and other binaries are available as global commands via the alternatives command.

Note: For GraalVM non-RPM based images (graalvm-community, python-community, truffleruby-community), the installation location is under /opt/ (/opt/graalvm-community-java<$FeatureVersion>/, /opt/truffleruby-<$GRAALVM_VERSION>/, and /opt/graalpy-<$GRAALVM_VERSION>/ respectively).

Note: GraalVM Community Edition container images are based on Oracle Linux slim images, and the default package manager is microdnf.

See a full list of GraalVM Community Edition container images here.

Tags

Each repository provides multiple tags that let you choose the level of stability you need including the JDK version, build date, and the Oracle Linux version. Image tags use the following naming convention:

$graalvm-version[-$jdk-version][-muslib][-$platform][-$build-date]

The following tags are listed from the most-specific tag (at the top) to the least-specific tag (at the bottom). The most-specific tag is unique and always points to the same image, while the less-specific tags point to newer image variants over time. For GraalVM 25.1+ releases, the tag prefix combines the JDK feature version, the letter i, and the GraalVM feature release number. For example, 25i1 selects GraalVM 25.1. GraalVM 25.1.3 is based on JDK 25.0.3, so its more-specific tags also contain 25.0.3. For example:

25i1-25.0.3-ol9-20260630
25i1-25.0.3-ol9
25i1-25.0.3
25i1-ol9
25i1

Pulling Images

  1. To pull the container image for GraalVM JDK for a specific feature release, such as 25.1, run:
     docker pull ghcr.io/graalvm/jdk-community:25i1
    

    Alternatively, to use the container image as the base image in your Dockerfile, use:

     FROM ghcr.io/graalvm/jdk-community:25i1
    

    You have pulled a size compact GraalVM Community Edition container image with the GraalVM JDK and the Graal compiler preinstalled.

  2. To pull the container image with the native-image utility for a specific feature release, such as 25.1, run:
     docker pull ghcr.io/graalvm/native-image-community:25i1
    

    Alternatively, to pull the container image with the native-image utility with the musl libc toolchain to create fully statically linked executables, use:

     docker pull ghcr.io/graalvm/native-image-community:25i1-muslib
    

    Alternatively, to use the container image as the base image in your Dockerfile, use:

     FROM ghcr.io/graalvm/native-image-community:25i1-muslib
    
  3. To verify, start the container and enter a Bash session:
     docker run -it --rm --entrypoint /bin/bash ghcr.io/graalvm/native-image-community:25i1
    

    To check the version of GraalVM and its installed location, run the env command from the Bash prompt:

     env
    

    The output includes the environment variable JAVA_HOME with its value corresponding to the installed GraalVM version and location.

    To check the Java version, run:

     java -version
    

    To check the native-image version, run:

     native-image --version
    
  4. Calling docker pull without specifying a processor architecture pulls container images for the processor architecture that matches your Docker client. To pull a container image for a different platform architecture, specify the desired platform architecture with the --platform option and either linux/amd64 or linux/arm64 as follows:
     docker pull --platform linux/arm64 ghcr.io/graalvm/native-image-community:25i1
    

Oracle GraalVM Container Images

Oracle GraalVM container images are published in the Oracle Container Registry (OCR) and include GFTC-licensed Oracle GraalVM. Learn more in the Oracle GraalVM Container Images documentation.

  • Tiny Java Containers: Learn how GraalVM Native Image can generate native executables ideal for containerization.

Connect with us