Recently, I completed a project that targeted the ESP32 microcontroller. Unfortunately, things got messy when it came time for my customer to verify the implementation on their end. While I had already figured out the proper system configuration sometime ago to get the source to successfully build on my development machine, I had to remember all the steps for my customer. This resulted in a painful back and forth, and we still couldn’t figure out why my customer couldn’t get the build to work. I then had the idea to use a container to ease the pain. I had been using containers for another open source Linux project and thought it made sense to create a container for my client. Within a few hours, I had a container set up, and the client was able to build the codebase with a few commands. I had previously relegated containers to be used by system administrators and was pleasantly surprised with their capability in providing a self-contained, independent environment for building source code.
In this article, we’ll briefly go over what are containers, what goes into setting up a container with specific examples from my experiences, and finally, what value they can provide for customer deliveries. While there are different container technologies and products, this article will focus on Docker.