I’ll try to really simplify this.
**Docker:** let’s say you have a program and it runs great on your computer at home. Your neighbour though has a different computer running a different operating system and different versions of little things. Your program won’t work on their computer for some reason. Wouldn’t it be great if you could virtually run an identical copy of a specific computer setup on theirs so the program works like expected?
Kubernetes/K8s: let’s say you want a whole bunch of these artificial computer images to work together in a specific way. Maybe you’re making a web app that has a bunch of separate services that talk to each other. You *could* set them up each one at a time manually. Or, with K8s you could write out a blueprint that says hey, “Orchestrator, please make an environment that looks like my blueprint.” And it does. And even better it can detect when something stops matching (like a missing/deleted item) and restore it to matching the blueprint. If you want to add/remove things, just publish a new blueprint.
CI/CD is about a couple of key ideas: getting code changes into production as fast/frequently as possible, and doing this in an automated way. The reasons behind the former is a very large topic with entire books dedicated to it, but a simple reason for why is small, frequent changes have better outcomes than big bulk changes. You automate it because it’s faster, safer, and more reliably consistent than a human. It’s also a waste of human potential.
Latest Answers