A Juju charm for automating the full lifecycle operations of Apptainer, a secure and portable container platform designed for ease-of-use on shared systems and high-performance computing (HPC) environments.
To deploy the Apptainer operator, you'll need to integrate it with a principal charm:
juju deploy ubuntu --base [email protected]
juju deploy apptainer --channel edge
juju integrate apptainer ubuntuYou can use juju status to inspect the deployment status with:
$ juju status
Model Controller Cloud/Region Version SLA Timestamp
apptainer charmed-hpc-controller localhost/localhost 3.6.7 unsupported 14:15:39-04:00
App Version Status Scale Charm Channel Rev Exposed Message
apptainer 1.3.4 active 1 apptainer 0 no
ubuntu 24.04 active 1 ubuntu latest/stable 26 no
Unit Workload Agent Machine Public address Ports Message
ubuntu/0* active idle 0 10.196.162.159
apptainer/0* active idle 10.196.162.159
Machine State Address Inst id Base AZ Message
0 started 10.196.162.159 juju-a3584f-0 [email protected] Running
Now you can run container images using Apptainer:
$ juju ssh apptainer/0 -- apptainer exec docker://ubuntu/python:3.10-22.04 python3 --version
juju ssh apptainer/0 -- apptainer exec docker://ubuntu/python:3.10-22.04 python3 --version
INFO: Converting OCI blobs to SIF format
INFO: Starting build...
Copying blob 128a37428dc8 done |
Copying blob b3ae6f4616bf done |
Copying blob 9ff6808be1ee done |
Copying config c967a28055 done |
Writing manifest to image destination
2025/06/16 18:21:44 info unpack layer: sha256:128a37428dc8f18a9bdaa585ec0f8ace4561b05fc95eee0102d67e2b1741d224
2025/06/16 18:21:44 info unpack layer: sha256:9ff6808be1eefee42d64f815a634a35192d0551a8afc1fb0f93dcb876acc8d0b
2025/06/16 18:21:44 info unpack layer: sha256:b3ae6f4616bfd32d63e8714d3363b1df0d734bcd55c07264cec1ee77f6f23dae
INFO: Creating SIF file...
Python 3.10.12
Connection to 10.196.162.159 closed.If you want to learn more about all the things you can do with the Apptainer operator, or have any further questions on what you can do with the operator, here are some further resources for you to explore:
The project uses just and uv for development, which provides some useful commands that will help you while hacking on the Apptainer operator:
just fmt # Apply formatting standards to code.
just lint # Check code against coding style standards.
just woke # Run inclusive naming checks.
just typecheck # Run static type checks.
just unit # Run unit tests.To run the Apptainer operator integration tests, you'll need to have both Juju and LXD installed on your machine:
just integration # Run integration tests.If you're interested in contributing, take a look at our contributing guidelines.
The Apptainer operator is a project of the Ubuntu High-Performance Computing community. Interested in contributing bug fixes, patches, documentation, or feedback? Want to join the Ubuntu HPC community? You’ve come to the right place 🤩
Here’s some links to help you get started with joining the community:
- Ubuntu Code of Conduct
- Contributing guidelines
- Join the conversation on Matrix
- Get the latest news on Discourse
- Ask and answer questions on GitHub
The Apptainer operator is free software, distributed under the Apache Software License, version 2.0. See the Apache-2.0 LICENSE file for further details.
Apptainer is both licensed under the BSD 3-Clause License and the LBNL License. See the upstream Apptainer LICENSE file for further licensing information about Apptainer.