infinite scalable systems with docker
TRANSCRIPT
#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