Introductory information about container types/storage architecture

Hello, I’m excited to be learning about Nomad (for a very small business context).

The task driver documentation doesn’t talk about pros and cons of choosing container types; is there documentation about that topic or recommended articles on the web possibly from the Nomad perspective?

Does choosing containers depend on the kind of service being deployed? In fact, is there documentation about the kind of services that are more suitable to containerization and deployment as a microservice? Are some server apps less suited? For example, would you deploy a DNS server (recursive or authoritative) in this manner?

Also I’m interested to learn if a Nomad-based architecture works better with certain types of storage solutions, such as ZFS, Ceph, local direct-attached storage, and/or with DRBD, etc?

Appreciate any tips, advice, documentation links, articles, etc.

Hi @dan09 :wave:

We are excited to have you learn about Nomad as well :grinning_face_with_smiling_eyes:

There’s not much in terms of Nomad here. Docker is probably the most popular option, so it’s a good place to start.

Not really. There are some drivers that are language-specific (such as the Java one), but in general it will all depend on your environment and tech stack. As I mentioned earlier, Docker is probably the most popular option.

Yes, you can definitely run a DNS in Nomad. Just make sure you don’t run into a situation where your base infrastructure relies on it (meaning, the hosts running Nomad should use an external DNS).

There are a few options here as well. Take a look at the stateful workload guides to learn more about them: Stateful Workloads | Nomad - HashiCorp Learn

Thank you kindly for replying. I am aware of Docker but was hoping to find a place to read about the pros and cons of the various container types and make an informed decision based on the various strengths of container types and how they apply to my context.

I’m sure there are various blogs comparing containers for non-Nomad deployments but I hoped for something relevant to Nomad, if not other reasons, at least because some container types may not be supported by Nomad – as an example, I don’t see support for CoreOS or FlatCar which seems to be a rkt replacement but Nomad is no longer supporting the rkt container driver.

The question about storage is similar – I’m grateful for the documentation you pointed out, but it is more focused on how to deploy each storage type and not a discussion about the types of storage, how they may or may not cluster, what kinds of underlying systems are recommended, etc. Don’t get me wrong, I think the how-to-deploy docs are great – for example, they also explain how to clean up after deploying an example setup – kudos!

I did learn that Nomad host volumes are available to the Nomad scheduler, and that Docker volumes are not – I’d like to read more along those lines or read about other people’s environments and architectural decisions, even casually on a mailing list.

Is my best bet to google for “Docker versus QEMU versus systemd-nspawn” or “Best cluster storage architecture with Nomad” and slog through the mix of good and bad search results?

Hum…sorry, I’m not aware of any material that is specific to Nomad like this. But in general, a non-Nomad comparison would be a fairly good start.

CoreOS and FlatCar are operating systems, not runtime engines. I haven’t tried it myself, but I’m fairly confident that Nomad would run just fine in FlatCar since it’s a Linux-based OS. FlatCar supports multiple container runtimes, including Docker and containerd.

Nomad has built-in support for Docker, while containerd is provided as an external plugin.

How do one compare to the other I can’t really say since I don’t have much experience with containerd myself.

I never tried to mount Docker volumes in Nomad, but I think it would be possible using the mount attribute? But I could be wrong.

That’s a great ask! Unfortunately I don’t know any on the my head, so I would like to see something like this as well.

Maybe there’s something in our resource library?

I know there was a talk about CSI and stateful workloads at HashiTalks this year, but I am not sure if it covers what you are looking for: Don't be Afraid of CSI: How Critical TechWorks Orchestrates Stateful Apps with Nomad

I’m sorry I don’t have a better answer for you :sweat_smile:

But hopefully someone else from the community will be able to share some of their experiences.