Pune Developer's Community

Speaker- SANGAM BIRADAR and Hire Me!

DOCKER

Let's start with a useful analogy?

Apps as Fundamentally changed

A dacade ago (and still true for many )

Apps were monolithic

built on single stack such as .Net or Java

Long Lived

Deloyed to single server

perhaps it was loadbalanced but still monolithic

Compare that to today

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

Docker facts

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

A "Dockerfile"

Container contain everything your app needs

Bineries

Libraries

File system

containers use the host for certain things

Networking

Kernel

So no need to run an entire OS (like in a VM) to run an app

summary

containers are awesome

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