I find myself doing more and more work with containers. Yet, I also find that a lot of people seem to be resistant to the concept. I’m always surprised when technologists reject technology without fully understanding what it does. Let’s talk about this just a little.
Containers Are Virtual Machines
OK, not really. Containers are not actually, literally, virtual machines. However, containers are, conceptually, very similar to virtual machines. The key difference is, a container carries what it needs from the operating system it was created from in order to function. But, except for that, these things are just an extension of the concepts behind virtualization.
Now, I know, in 2021, you are using virtual machines, in whole, or in part, to manage your IT infrastructure. You may host them, or you may use a 3rd party provider, or you may be on the cloud, or some combination of all this, but you’re using virtual machines. Yes, not necessarily for every load or in every situation, but they are in use in your environment.
With that, why the pushback, and there is real pushback, on using containers? It’s simply an extension of a technology stack that you have already bought into.
You Don’t Have To Use Kubernetes
One of the arguments I’ve seen for people saying that they don’t want to, or simply won’t, use virtual machines is the perception that you have to learn and implement Kubernetes in order to learn, implement, and use containers.
Well, that’s not true. Period.
Most of the time, when I’m consuming containers, I’m just running them through Docker. I use Docker containers in Linux and Windows. They simply work. On either OS. No Kubernetes required.
Now, as you begin to weaponize these things, heading for large scale container use, not simply development, but production use of containers, yeah, you’re likely to then need to get Kubernetes in on the action. However, that’s down the road a piece. Right now, you’re not using containers. So, your first use isn’t going to be production (jeez, I hope not anyway), but development and test. There, no need for Kubernetes.
Containers Add, A Little, Complexity
I’m not going to try to hide this. Containers do add another layer to the whole IT stack. Yep. That adds some complexity. However, as with anything, there are wins and losses. The loss here being a little bit more complexity. Now, let’s focus for a moment on the wins.
Upgrades? Nope. I just get a new copy of the container, which, by the way, I don’t have to “install” in order to use. The call to run the container can also be what upgrades, completely on the fly. Win!
While there is a little complexity since you do have to run the container service (again, I use Docker, but there are others), that’s all that gets added. For example, here are two commands to run Flyway:
docker run flyway/flyway migrate
Well, there you have it. The first command is easier. Grant, you’re an idiot.
While that may be true, bear with the idiot for a moment. The first command does require that I do the following before it will successfully run:
- Find and download the Flyway runtime
- Add Flyway commands to the OS path for my system
- Configure the Flyway configuration file.
The second command, well, that just runs. Even if it’s my first time running Flyway, it’ll go and get the container for me, as a part of the run. I don’t have to lift a finger. Now which one is more complex? Win.
You Can More Stupid, Like Me
I’m not the sharpest tack in the box. No, I’m not belittling myself. I know I am far from stupid. However, let’s be fair, there are quite a few people much smarter than I am. Probably, you’re one of them.
Containers offer me an opportunity that would be much more difficult without them. I’ve been demoing stuff for over a year in PostgreSQL. I’m, slowly, learning how to work PostgreSQL. Yet, I’ve never done an installation of the software. I’ve always, only, used cloud services and containers. Oh, and the cloud services, they’re using containers too, so there’s that. Same thing with Oracle, MySQL, and several other technologies. I’ve been able to add tools to my toolbox much faster without, honestly, having to learn as much.
Yeah, learn less, do more. That sounds kind of horrible put that way, but it works. I mean ultimately, I learn more, but in other places. Instead of spending time getting operating systems set up in order to spend time installing software so I can spend time troubleshooting missing or incorrect drivers, all before I can actually do work, I just start working and learning. It’s pretty nice.
There are lots of reasons why you won’t be running containers in your production environment tomorrow. I agree with, well, most of those reasons. However, explain to me why you’re not using it for development and testing? Why it’s not a part of your tool set for exploring new technologies, especially since it relieves so much pain (oh lordy, the difference between running an Oracle container and trying to get Oracle installed… yeesh!)?
We’re moving into a multi-platform, multi-tool world, ready or not. It’s just happening. Please, take advantage of something that can make all of that just a little bit easier. Containers.