24.13-24.0.1
Run Azul Zulu in a Docker Container
This section shows how to run Azul Zulu Builds of OpenJDK inside a Docker container with Zulu pre-installed.
Prerequisites
Install Docker by following the Docker documentation.
Community Availability Distributions
Community Availability (CA) distributions are Azul Zulu Builds of OpenJDK that are free to download and use. Docker images with CA distributions are available from Docker Hub, based on the following operating systems:
OS | Image Name |
---|---|
Ubuntu |
|
Debian |
|
Alpine Linux |
|
CentOS |
|
To pull a specific image, use the corresponding image name in the docker pull
command.
For example, to pull the Alpine Linux image with Azul Zulu JDK 21, run:
docker pull azul/zulu-openjdk-alpine:21
You can check the available image tags on Docker Image Tags.
Run Java Apps With Zulu CA in Docker
You can test the Docker image by running the following command in a terminal:
docker run -it --rm azul/zulu-openjdk:21 java -version
The command allocates a terminal and runs java
.
It prints a message similar to this:
openjdk version "21.0.4" 2024-07-16 LTS
OpenJDK Runtime Environment Zulu21.36+17-CA (build 21.0.4+7-LTS)
OpenJDK 64-Bit Server VM Zulu21.36+17-CA (build 21.0.4+7-LTS, mixed mode, sharing)
If you see this message in your terminal, you’ve successfully executed java
inside a container.
The command above simply executes java
.
To run a Java application, you must provide your application classes and resources to the java
command.
You do this by mounting a local directory from the container.
As an example, let’s assume that your application files are located in a single directory.
You would normally run the app by executing java MyApp
in that directory.
Use the -v
option of docker run
to make the directory available inside the container.
The command might look like this:
docker run -it --rm \
-v ${PWD}:/usr/src/project \
-e CLASSPATH=/usr/src/project \
azul/zulu-openjdk:11 java MyApp
Subscriber Availability Distributions
Subscriber Availability (SA) distributions are tested, certified, and commercially supported Azul Zulu Builds of OpenJDK. These bundles are only available for Azul customers and can be accessed with authentication.
Manage Access Tokens
Customers can manage their user token using the Azul token management app on access.azul.com. You need to login with the same credentials used for ftp.azul.com
. These tokens can be used in combination with the ftp username to create the basic authentication header required to download from the restricted repositories.
Note
|
Tokens are not stored and will only be visible when created. Please save them immediately in a safe location. You can revoke a token if it gets compromised or lost. |
In the examples below, the following references are used:
-
<username>
: Your FTP username. -
<token>
: Access token you created generated in the Azul token management app.
Please contact the Azul Support team ([email protected]) if you need assistance with your tokens.
Note
|
Tokens for the SA Docker Images are valid for 6 months. |
Create Docker Image with SA Zulu
-
Get a
<username>
and<token>
as described above. -
You can check the available image tags on Docker Image Tags.
-
You can pull an image from the repository following these steps:
$ docker login sa.registry.azul.com Username: <username> Password: <token> Login Succeeded $ docker run -it sa.registry.azul.com/zulu-sa-ubuntu:17-jre Unable to find image 'sa.registry.azul.com/zulu-sa-ubuntu:17-jre' locally 17-jre: Pulling from zulu-sa-ubuntu Digest: sha256:0ba81abe4fa8d561f1f78f6090d50ba5a4ca5849046a3fa422103321529e62e1 Status: Downloaded newer image for sa.registry.azul.com/zulu-sa-ubuntu:17-jre root@05c3726b230b:/# java -version openjdk version "17.0.15" 2025-04-15 LTS OpenJDK Runtime Environment Zulu17.58+22-SA (build 17.0.15+6-LTS) OpenJDK 64-Bit Server VM Zulu17.58+22-SA (build 17.0.15+6-LTS, mixed mode, sharing)
Tagging Scheme for SA Images
Each Docker image is tagged using a versioned and alias-based scheme that reflects the underlying Java release, Zulu build, and runtime variant (JDK or JRE). The underlying architecture is not exposed in the tag. All published tags reference multi-architecture images, supporting both amd64 and arm64 transparently.
Fixed Version Tags
Immutable, specific-version tags follow the pattern <zuluversion>-<javaversion>[-jre]
:
-
<zuluversion>
: Azul Zulu release version (e.g.24.14
). -
<javaversion>
: OpenJDK version (e.g.24.0.1
). -
-jre
: Optional suffix for JRE; if omitted, the image contains the full JDK.
Stability is defined by the minor version of the Zulu release:
-
Odd minor: Critical Patch Update (CPU) release
-
Even minor: Patch Set Update (PSU) release
More details on Azul Zulu versioning is available here.
Examples:
Tag | Meaning |
---|---|
Zulu 24.13 based on OpenJDK 24.0.1 |
|
|
Zulu 24.13 based on OpenJDK 24.0.1 |
|
Zulu 24.14 based on OpenJDK 24.0.1 |
|
Zulu 24.14 based on OpenJDK 24.0.1 |
Mutable Alias Tags
To simplify the use of these images and support dynamic "latest" resolution, the following mutable aliases are provided:
Alias | Description |
---|---|
24-cpu |
Latest Java 24 CPU JDK |
24-cpu-jre |
Latest Java 24 CPU JRE |
24-psu |
Latest Java 24 PSU JDK |
24-psu-jre |
Latest Java 24 PSU JRE |
Note
|
Replace 24 with your required version.
|