packaged by Chainguard
Contact our team to test out this image for free. Please also indicate any other images you would like to evaluate.
Minimal JRuby base image. JRuby is an implementation of Ruby on the JVM, available on Adoptium OpenJDK 21 and 25 in both JDK and JRE variants.
Chainguard Containers are regularly-updated, secure-by-default container images.
For those with access, this container image is available on cgr.dev:
Be sure to replace the ORGANIZATION placeholder with the name used for your organization's private repository within the Chainguard Registry.
JRuby runs on a JVM, so every tag pairs a JRuby release with an Adoptium OpenJDK version and with either a full JDK or a JRE, mirroring the tag scheme the official JRuby image on Docker Hub publishes from jruby/docker-jruby. Tags are suffixed -jreNN or -jdkNN; unsuffixed tags, including latest, are the JRE on the default OpenJDK version. See the Containers Directory for the tags available today.
Use a jre tag to run applications, and a jdk tag when the same image also needs Java build tooling such as javac or jshell.
Each tag has a matching -dev variant that adds a shell, a package manager and build-base, for use as the build stage of a multi-stage build.
These images are comparable to the official JRuby image on Docker Hub, but there are differences you should be aware of before migrating:
net-telnet and xmlrpc are not preinstalled. The upstream image runs gem install net-telnet xmlrpc during its build. These images ship only JRuby itself; install those gems yourself if you need them. Note this also means webrick is absent — upstream gets it as a dependency of xmlrpc, not from JRuby.USE_SYSTEM_CA_CERTS and the /certificates drop-in are not supported. Upstream inherits a /__cacert_entrypoint.sh wrapper from eclipse-temurin that rebuilds the JVM keystore at container start. These images instead symlink the JVM keystore to a package-managed store, so the OS trust store is already honoured with no startup work. To add a custom CA, rebuild /etc/ssl/certs/java/cacerts or set -Djavax.net.ssl.trustStore.Warning: AppCDS archive directory is not writable, disabling AppCDS operations on startup. The JRuby launcher wants to cache a JVM class-data-sharing archive inside its own installation directory, which is read-only for the non-root default user. JRuby runs normally without it; pass --nocache, or set JRUBY_JSA to a writable path, to opt out or to relocate the archive.-dev variant and copies the result into the minimal image.Evaluate a one-liner:
Start an interactive JRuby REPL (the default command):
Run a script from the working directory:
Use the image as the base for a Ruby application:
The images set the following environment variables:
| Variable | Value | Purpose |
|---|---|---|
|
| World-writable gem install location, so |
|
| Keeps Bundler from writing a |
|
| Suppresses Bundler's root warning. |
|
| Points at the Adoptium OpenJDK shipped in the image. |
|
| Matches the upstream image; the |
PATH includes /usr/local/bundle/bin, so binaries provided by installed gems are directly executable.
The working directory is /work, which is world-writable.
Chainguard's free tier of Starter container images are built with Wolfi, our minimal Linux undistro.
All other Chainguard Containers are built with Chainguard OS, Chainguard's minimal Linux operating system designed to produce container images that meet the requirements of a more secure software supply chain.
The main features of Chainguard Containers include:
For cases where you need container images with shells and package managers to build or debug, most Chainguard Containers come paired with a development, or -dev, variant.
In all other cases, including Chainguard Containers tagged as :latest or with a specific version number, the container images include only an open-source application and its runtime dependencies. These minimal container images typically do not contain a shell or package manager.
Although the -dev container image variants have similar security features as their more minimal versions, they include additional software that is typically not necessary in production environments. We recommend using multi-stage builds to copy artifacts from the -dev variant into a more minimal production image.
To improve security, Chainguard Containers include only essential dependencies. Need more packages? Chainguard customers can use Custom Assembly to add packages, either through the Console, chainctl, or API.
To use Custom Assembly in the Chainguard Console: navigate to the image you'd like to customize in your Organization's list of images, and click on the Customize image button at the top of the page.
Refer to our Chainguard Containers documentation on Chainguard Academy. Chainguard also offers VMs and Libraries — contact us for access.
This software listing is packaged by Chainguard. The trademarks set forth in this offering are owned by their respective companies, and use of them does not imply any affiliation, sponsorship, or endorsement by such companies.
Chainguard's container images contain software packages that are direct or transitive dependencies. The following licenses were found in the "latest" tag of this image:
Apache-2.0
BSD-3-Clause
Bitstream-Vera
FTL
GCC-exception-3.1
GPL-2.0-only
GPL-2.0-or-later
For a complete list of licenses, please refer to this Image's SBOM.
Software license agreementChainguard Containers are SLSA Level 3 compliant with detailed metadata and documentation about how it was built. We generate build provenance and a Software Bill of Materials (SBOM) for each release, with complete visibility into the software supply chain.
SLSA compliance at ChainguardThis image helps reduce time and effort in establishing PCI DSS 4.0 compliance with low-to-no CVEs.
PCI DSS at Chainguard