Published: Jun 30, 2025
Before we start using Docker we should really know what it is and why we might like it.
Now I’m no Docker expert and I don’t like any of the explanations I’ve seen around the internet, therefore I’ll just give my own version as to what I think it is and why it’s useful. Mostly focusing on the latter.
So, what is Docker? What are Containers? What does it all mean?
Well, I’m not 100% sure on why the sea references, but that’s what we’ve got. But irrespective of the naming, the premise is powerful.
How I like to see Docker as a whole is kind of like allowing us to have an EXE that you don’t have to install and that won’t impact other software or applications on your machine.
So, imagine this situation… you are developing new software or you’re testing an application and you want to make sure that you’re on a level playing field with all others in your team so that your tests and development are all valid. How do you do this?
Well, you could install a VM and then clone it over and over. This would work but would use a lot of resources within a VM Host and you’re running the risk that one machine may run updates that another doesn’t etc. So, it’s a large drain and with flaws.
So, we can build our app inside a Container. This is kind of like an EXE in that everything you need is packaged up and stored in the Container. This includes all dlls, APIs etc basically everything they need in order to run. Therefore, everyone and anyone coding will get the same resources and, being utterly contained, get a consistent performance and view of the application.
It also means that they are distinct from the operating system that’s running them. Therefore, you can deploy them anywhere (on premise, Cloud) and also irrespective of Operating System (for example, I run SQL on Linux in my Windows Desktop).
These Containers are what Docker runs for us. Therefore, Docker is the Engine that runs and manages our Containers.
For SQL Server, we can therefore have a Container which has SQL Server in it and allows us to run SQL Server on our desktops but without needing to install them (as all their dlls etc are within the Container). As mentioned above, they also allow the abstraction required to run SQL on Linux in a Windows environment so that we can test the differences, see how it works etc.
It’s also great for updates as we can simply swap out the Contained resources for another set without having to do an uninstall / reinstall. This means we can, for example, upgrade SQL Server in seconds and therefore easily test for compatibility issues or new features with ease.
Hopefully this helps in some way? But the next few blogs will show us using it and that will help even more.