1 of 34

Slide Notes

Ladies, gentlemen, welcome to my presentation on Docker and what it can do for you. Hopefully it will be as exciting as most successful box office hits. But before we go to the entertaining part, let's focus on some trailers...
DownloadGo Live

Docker made simple

Published on Nov 24, 2015

No Description

PRESENTATION OUTLINE

Untitled Slide

Ladies, gentlemen, welcome to my presentation on Docker and what it can do for you. Hopefully it will be as exciting as most successful box office hits. But before we go to the entertaining part, let's focus on some trailers...
Photo by dbtelford

Untitled Slide

First of all, the one and the only, a company that gave me opportunity to work on my most beloved Docker: Arynga. What we do is even more interesting. We do interwebs for cars!

Untitled Slide

Or well... practically we do interwebs in terms of over-the-air updates for virtually every piece of electronic hardware in modern car. We use technologies such as

We're hiring!

What's more important, you can do it with us!

Docker made simple

And now, finally we're there. Docker - what it is, what can it do and how to start with it? That's simple, but before we start.
Photo by zacdis

GIT/CS/O d-(+) s+: a C++$>++++ UL++$ P++ L++ E--- W++ N+ o- K w O- M- V- PS PE Y+ PGP t 5 X R tv+ b++ DI++ D- G+ e+++ h-- r y?

Yet another trailer. Here you probably have everything you may want to know about me. If it's not enough...
Photo by i k o

Untitled Slide

You can find it here.

Untitled Slide

If you're still not satisfied, I can tell you I like penguins. And for that reason I wanted to be Linux evangelist, spreading the 'good word' everywhere.

Untitled Slide

Just like the most iconic father GNU, just like the most iconic lumber-like, bearded, long-haired, stereotypical IT guys.
Photo by tian2992

Maciek za bardzo dba o higiene, zeby zostac ewangelista Linuxa

But then one guy crushed my dreams with just one sentence...

Translation:
Maciek cares for his hygiene too much to be Linux evangelist.
Photo by tian2992

Untitled Slide

So recently I moved to Docker. It's more... sexy ;)

Untitled Slide

But what the hell is docker, and why not to simply go with well-known virtualization solutions?
It has some great advantages, but this you can find everywhere in the internet. How does it really work?

Untitled Slide

Let's compare company infrastructure to a fridge - this is mine.

Untitled Slide

Let's have a look at one of our servers - vegies drawer and it's organized. Crappy I'd say. One big package provided by vendor, all of the other services scattered around. We want to separate it and have possibility to quickly replace elements, to make it on-demand, to migrate fully working service between physical servers. How?

Untitled Slide

That's simple - we pack every independent service in virtual machine. We use some resources to create clean virtual machine, install fully-blown operating system inside, install dependencies and finally install applications.
tic.. toc... tic... toc...
Done!
But now... Do you remember what packages you've installed to each virtual machine?
Can you see how much of resources it uses?
How can I touch the exact service? Should I open the tupperware (IP port)? Should I double-mount drive somehow?
and finally...

Untitled Slide

What can I do with this one? It's left behind because I have no more resources :(

The answer is simple

Untitled Slide

This is where docker comes into play. It nicely separates each service, makes them all fit in almost the same amount of resources as before without using additional layer of virtualization. Is it good? when one of the services needs a bit more HD space, it takes the space, if it needs more CPU, it takes the CPU.

Untitled Slide

Sometimes it may be dangerous, when your container needs more... and more... and more, our biggest container grew to 1.6TB because of logs.

Where can we put it?

Where can we use docker?
Photo by E_TAVARES

Untitled Slide

So now, this is manual that lived on our Confluence back when I started my work at Arynga. Instructions to install full server for our application.

Untitled Slide

These are the steps that broke natural top-down flow of manual or referenced different manual from the interwebs.

Untitled Slide

These are the places where we have 'if something goes wrong' clauses.

Untitled Slide

These are sections for manual file edits, things that cannot be simply copy-pasted to console/editor.

Untitled Slide

Let's compare this solution to a car. Back then I've built my first car and realized that...
Photo by aaipodpics

Untitled Slide

...my car is actually a donkey.
Photo by poritsky

Docker Manual 0.1:

  • Clone repository
  • Download jar file
  • Download deb file
  • $ ./configure -p
  • $ make
  • $ docker-compose up -d
As I'm really stubborn I've decided to do it my own way. Docker along with docker-compose (fig back then) came into play and first version of manual for docker-based environment setup was shortened to what you see on screen.
Photo by szeke

Docker Manual 0.2:

  • Clone repository
  • $ ./configure -p -d
  • $ make
  • $ docker-compose up -d
But I'm lazy, so I've made it even shorter, -d option downloads artifacts if you're in correct network or connected through VPN.
Photo by extranoise

Docker Manual 0.3:

  • Clone repository
  • $ ./configure -p -d
  • $ docker-compose build
  • $ docker-compose up -d
Next thought - why use additional tool like make if you can do it all with docker-compose ?

Docker Manual 1.0:

  • Clone repository
  • $ ./configure -p -d
  • $ ./scripts/create.sh
And finally, what we do now to build the environment, like everywhere, on developer's laptop, on any internal server, doesn't really matter. You just do it and go make yourself some coffee.

How to measure progress?

Photo by Kaensu

Everyone loves charts *_*

Photo by Ponzi_Unit

Banana time!

Photo by frankieleon

I mean...

Photo by dingler1109

Example time!

Photo by bindermichi