Docker
Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly.

Summary

Maintain local registry with custom images for personal development environment and projects.

Use Cases

Registry

I’m currently running a private Docker registry on my homelab cluster. I use this registry to store images used by Nomad jobs, and images used by Coder templates. Initially I spun this up because I was iterating on the deploy process and was using a ton of bandwidth pulling images from Docker Hub. I’ve since found it useful to have a private registry for storing images that I’ve customized and don’t need to publish, or that I need to pull often.

Devcontainers

Before I settled on Coder to manage my development environments, I spent quite awhile trying to find a comfortable workflow with VS Code devcontainers. There’s still some .devcontainer files in scattered around my GitHub, but I’m not actively using them anymore.

Packer

I’ve used Packer[^packer-home] to build custom Docker images for use in my homelab. I’ve used it to build images for Nomad jobs, and images for Coder templates. Before Coder I also used Packer to build images to use with VS Code devcontainers. Why use Packer? I like to try things out and I was already using other Hashicorp tools, so it seemed like a good fit. Definitely worth the exploration, but I’m not actively using it anymore.[^packer-docs]

Dockerfiles

Mainly used to build images to use with Coder templates and VS Code devcontainers.

Also used to containerize some of my personal projects.

Docker Compose

  • docker-compose