Nomad: One Orchestrator for Containers, Legacy Apps, and VMs
You've got a Kubernetes cluster humming along, but there's that one Java service from 2014 that nobody wants to touch. And maybe a batch job that runs as a plain executable. And some QEMU virtual machines. Do you really need three separate orchestration systems to manage all of it? HashiCorp's Nomad takes a different approach: one scheduler that handles containers, non-containerized applications, and virtual machines on the same infrastructure.
What It Does
Nomad is a workload orchestrator that deploys and manages containerized and non-containerized applications across on-premises and cloud environments. It supports Docker and Podman containers, executables, Java applications, and QEMU virtual machines through a pluggable task driver system. The same binary that schedules your containers can also run your legacy binaries without requiring you to containerize them first.
Architecturally, Nomad runs as a single self-contained binary. It combines resource management and scheduling into one system and doesn't require external services for storage or coordination. It's distributed and resilient, using leader election and state replication to maintain high availability. Nomad handles application, node, and driver failures automatically. It runs on Linux, Windows, and macOS, and a commercial version (Nomad Enterprise) is also available.
Why It's Cool
Legacy apps don't need to be containerized. This is the headline feature. Most orchestrators assume everything is a container. Nomad's pluggable task drivers let you run executables and Java applications directly, which means you can bring orchestration benefits to workloads that would otherwise be left out. You get scheduling, health checking, and failure recovery without a risky containerization project.
No external dependencies for core operation. Nomad doesn't need etcd, ZooKeeper, or a separate database. It handles its own storage and coordination. That's fewer moving parts to operate, monitor, and troubleshoot. For teams without dedicated platform engineering resources, this matters.
GPU and device plugin support is built in. If you're running machine learning or AI workloads, Nomad has built-in support through device plugins that automatically detect and utilize GPUs, FPGAs, and TPUs. You don't need to bolt on a separate solution.
Federation works out of the box. Nomad was designed for global-scale infrastructure and supports multi-region, multi-cloud deployments natively. You can deploy applications across regions and clouds without additional federation tooling.
It's been proven at scale. Nomad uses an optimistically concurrent scheduling approach that increases throughput and reduces latency. It's been deployed in production environments with clusters exceeding 10,000 nodes.
It fits the HashiCorp ecosystem. If you're already using Terraform, Consul, or Vault, Nomad integrates with them for provisioning, service discovery, and secrets management. That's a practical advantage if you're invested in that toolchain.
How to Try It
Getting started with Nomad for local testing is straightforward:
-
Head to the Getting Started tutorials for instructions on setting up a local Nomad cluster. This is explicitly for non-production use, so don't skip that caveat.
-
If you want to spin up a development cluster on a public cloud, check the
terraformdirectory in the repository. It contains Terraform manifests for exactly that purpose. -
For production deployments, refer to the Production reference architecture. It covers recommended practices and a reference architecture you can follow.
-
The documentation is split across several resources: concepts and user guides, CLI docs, API docs, and plugin docs. There's also a forum if you get stuck.
The repository is at github.com/hashicorp/nomad. Note that Nomad is licensed under BUSL-1.1, so check the license terms if you're evaluating it for commercial use.
Final Thoughts
Nomad is a solid choice if you're dealing with a mixed workload environment and don't want to run separate orchestrators for containers and everything else. It's particularly appealing for teams that already use HashiCorp tools or that want a simpler operational footprint than Kubernetes. The trade-off is ecosystem size—Kubernetes has a much larger community and more third-party integrations. But if you value simplicity, built-in federation, and the ability to run legacy applications alongside containers without a containerization project, Nomad is worth a serious look.
Follow @githubprojects for more developer tools and open source projects.