Infinite Scalable Systems with Docker

Preview:

Citation preview

#dfist#dfist

Infinite Scalable Systems with Docker

Huseyin BABAL

Full-Stack Software Engineer @ GittiGidiyor

#dfist#dfist

#dfist#dfist

Docker

#dfist#dfist

What is Docker

Docker lets you to package application with its dependencies like code,

runtime, system libraries, etc. inside one container

#dfist#dfist

VM vs Docker

Infrastructure Infrastructure

Host OS OS

Hypervisor Docker Engine

Guest OS Guest OS Guest OS

bins/libs bins/libs bins/libs

app1 app2 app3

bins/libs bins/libs bins/libs

app1 app2 app3

#dfist#dfist

Docker Machine

#dfist#dfist

What is Docker Machine?

Docker Machine lets you to create Docker host

and specific client to connect Docker on local

computer, cloud providers, even in your own

data center.

#dfist#dfist

Creating Docker Machine

docker-machine create -d virtualbox default

#dfist#dfist

Docker Swarm

#dfist#dfist

What is Docker Swarm?

Native clustering for Docker

#dfist#dfist

Howto Create Swarm?

SID=docker run swarm create

$SID will be used on clustering

#dfist#dfist

Master Create

docker-machine create \

-d virtualbox \

--swarm \

--swarm-master \

--swarm-discovery token://$SID \

swarm-master

#dfist#dfist

Agent Create

docker-machine create \

-d virtualbox \

--swarm \

--swarm-discovery token://$SID \

swarm-agent-00

#dfist#dfist

Swarm Master Process

#dfist#dfist

Swarm Agent Process

#dfist#dfist

Swarm Relay Network

#dfist#dfist

Architectural Design

#dfist#dfist

Components

docker-gen Image

Nginx

NodeJS Application

#dfist#dfist

Docker Project

#dfist#dfist

docker-gen Image

Generates files from docker container metadata

● Centralized Logging

● Log Rotation

● Reverse Proxy Configs

● Service Discovery

#dfist#dfist

How to Build?

docker build -t docker-gen ./docker-gen

#dfist#dfist

How to Run?

docker run -d --restart=always --name=docker-gen \

--env=affinity:image==docker-gen:latest \

--env=DOCKER_HOST=tcp://192.168.99.103:3376 docker-gen

#dfist#dfist

Nginx

#dfist#dfist

How to Run?

docker run -d --restart=always --name=nginx -p 80:80 --

volumes-from=docker-gen nginx

#dfist#dfist

http {

upstream api.nodejs.com {

server 192.168.99.100:5001;

server 192.168.99.100:5002;

}

server {

listen 80;

location / {

proxy_pass http://api.nodejs.com;

}

}

}

#dfist#dfist

NodeJS Application

#dfist#dfist

How to Run?

docker run -d --restart=always -p 3000 --name hello-

express-1 -P --env VHOST=api.nodejs.com

huseyinbabal/express-hello

#dfist#dfist

Load

Balancer

swarm-agent-01

swarm-agent-02

swarm-master

Docker

Gen

#dfist#dfist

Show Time!You can clone project here

#dfist

Thank you!Questions?Questions?

@huseyinbabal

+HüseyinBABAL

http://huseyinbabal.net

Recommended