Let's start with a useful analogy?
Apps as Fundamentally changed
Apps were monolithic
built on single stack such as .Net or Java
Deloyed to single server
perhaps it was loadbalanced but still monolithic
apps are constantly developed
new versions are being deployed often
buit from loosely coupled components
Deployed to a multitude of servers
How do you handle all these parts?
Let's Start with a useful analogy
You are a shipping company
You ship pianos
You're great at it
Then a customer wants to use you to ship patatoes as well
You Say "Ok, they will fit next to the pianos"
Then another customer wants you to ship whiskey
Things start to break when the whiskey spills all over the piano
And your crew is wondering how to handle all the differences
Size of goods
Form of goods
Requirements to keep it safe and stable during transport
and also being able to transport it using different transport methods
So what to do?
so it was solved long year ago
Enter, the intermodel container
Now you can ship everything!...
so what does this have to do with software?
well , it's similier
You have an app built out of a lot of small parts
These small parts are called micro services
You can surely install it in a production datacenter
But would it look the same if you ran it in your dev enviroment?
What about in a lab?
Or in the cloud somewhere?
Enter , the container
containers make you app portable
it looks the same everywhere
No matter where you run it
Doesn't need you to install the app dependencies on your host
Docker is one container standard
Docker has built a large ecosystem around it
launched in march 2013
over 100000 millions downlods
over million Dockerized applications
1000 + meetup groups around world
100 + case studies from companies such as cambridge heathcare,ebay ....etc...
conatiners make your app shareable
The needs of the app is defined in a text file
Container contain everything your app needs
containers use the host for certain things
So no need to run an entire OS (like in a VM) to run an app
You can use them for your next app
You can use thousands of already existing apps
They are always looks the same
they are always portable
and they leave your host OS clean