SlideShare a Scribd company logo
Docker Container
Orchestration
@dhilipsiva
Tech Lead, Full-Stack & DevOps - @Appknox
http://dhilipsiva.com
dhilipsiva@gmail.com
Container Developers
Meetup Bangalore
Meetup #3 - Dockerizing Applications
Docker Orchestration tools
https://www.meetup.com/Container-Developers-
Meetup-Bangalore/events/233529360/
@dhilipsiva
Tech Lead, Full-Stack & DevOps - @Appknox
I code for Web, Mobile, Embedded & IoT. Open-
Source Fanatic. Big Data & Machine Learning
Enthusiast. Dad. Atheist
So primarily a Developer + little bit of this & that
Jack of all trades & Master of none
I have no idea what I am
talking about
If you think that I got something wrong, then I
probably am. So please feel free to correct me
After all, it is the mistakes and the lessons we
learn from it - are the very things that de ne us
Constructive criticism is more than welcomed!
Orchestration
Orchestration (computing)
Orchestration is the automated arrangement,
coordination, and management of computer systems,
middleware, and services (From Wikipedia)
Process Discovery
Scheduling
Cluster Management
Uni ed way of installing backing services
Easy way to Update / rollback applications
Etc,.
Orchestration Tools
Container - Speci c tools
Kubernetes, Marathon, Chef Ironfan, Rancher,
Helios, Ansible Container, Swarm & SwarmKit,
Shipper, Azk, maestro-ng, Maestro,
Others
Ansible, OpenStack Heat, Python Fabric, Chef,
Puppet, Serf, Archipel, governor, Gru, Circuit, Rex
Kubernetes
There is a detailed Hands-On sessions on
Kubernetes this Afternoon
Docker Basics is an absolute requirement.
If you are not comfortable with Basics of Docker,
please attend Anand Gothe's Docker by example
Session
Marathon
Apache Mesos (Or on Mesoshpere's DCOS)
Apache Zookeeper
Install Marathon on the Cluster
Create marathon-demo.json le
run
curl -X POST http://marthon-master:PORT/v2/apps -d
@marathon-demo.json -H "Content-type:
application/json"
basic-3.json
{
"id": "marathon-demo",
"cmd": "python3 -m http.server 8080",
"cpus": 0.5,
"mem": 32.0,
"container": {
"type": "DOCKER",
"docker": {
"image": "python:3",
"network": "BRIDGE",
"portMappings": [
{ "containerPort": 8080, "hostPort": 0 }
]
}
}
}
Container (Docker) Orchestration Tools
Container (Docker) Orchestration Tools
Rancher
Mostly GUI Based
You can experiment with it yourself by pulling the
Docker Image & running it:
docker run -d --restart=always -p 8080:8080
rancher/server
Helios
Installation
# install helios-solo on Debian/Ubuntu
$ curl -sSL https://spotify.github.io/helios-apt/go | sudo sh -
$ sudo apt-get install helios-solo
# install helios-solo on OS X
$ brew tap spotify/public && brew install helios-solo
# launch a helios cluster in a Docker container
$ helios-up
# check if it worked and the solo agent is registered
$ helios-solo hosts
# Create an nginx job using the nginx container image,
# exposing it on the host on port 8080
$ helios create nginx:v1 nginx:1.7.1 -p http=80:8080
# Check that the job is listed
$ helios jobs
# List helios hosts
$ helios hosts
# Deploy the nginx job on one of the hosts
$ helios deploy nginx:v1 <host>
# Check the job status
$ helios status
# Curl the nginx container when it's started running
$ curl <host>:8080
# Undeploy the nginx job
$ helios undeploy -a nginx:v1
# Remove the nginx job
$ helios remove nginx:v1
Ansible Container
$ [sudo] pip install ansible-container
$ ansible-container init
$ ansible-container build
$ ansible-container run
$ ansible-container push
$ ansible-container shipit
Swarm & SwarmKit
Both are very similar
Swarm is stand-alone
SwarmKit comes with Docker 1.12 (Swarm Mode)
# Creating a service
$ swarmctl service create --name redis --image redis:3.0.5
$ swarmctl service ls
$ swarmctl service inspect redis
$ swarmctl service update redis --replicas 6
$ swarmctl service update redis --image redis:3.0.6
# Rolling update
$ swarmctl service update redis --image redis:3.0.7 --update
Shipper
shipper is a fabric for docker - tool for orchestrating
docker containers. Supports parallel execution and
can generate command line interface
from shipper import Shipper, run, command
@command
def build(tag, path):
s = Shipper()
s.build(tag=tag, path=path)
@command
def ps(all=False, running=True):
s = Shipper(["host-a", "host-b"])
print s.containers(pretty=True, all=all, running=running)
@command
def start(image, command, ports=None):
if ports:
ports = ports.split(",")
s = Shipper()
s.run(image, command, ports=ports, once=True)
@command
def stop(image=None):
s = Shipper()
s.stop(*s.containers(image=image, running=True))
run()
$ python env.py ps --all
$ python env.py build base ~/images/base
$ python env.py build stop --image dev/.*
Maestro
templates:
nodejs:
config:
command: /usr/bin/node /var/www/app.js
ports:
- '80'
environment:
- PORT=80
buildspec:
url: github.com/toscanini/docker-nodejs
require:
mongodb:
port: '27017'
mongodb:
config:
command: /usr/bin/mongod --config /etc/mongodb.conf
buildspec:
url: github.com/toscanini/docker-mongodb
Maestro provides the ability to easily launch,
orchestrate and manage mulitple Docker containers
as single unit.
maestro build
maestro start [node_name]
maestro stop [node_name]
maestro run template [commandline]
maestro ps
maestro destroy
Azk
Use azk and easily orchestrate development
environments on your own machine and then just
code.
$ brew install azukiapp/azk/azk
$ azk agent start
$ azk init
$ azk start -vv
$ azk status
# Access http://azkdemo.dev.azk.io
/**
* Documentation: http://docs.azk.io/Azkfile.js
*/
// Adds the systems that shape your system
systems({
azkdemo: {
// Dependent systems
depends: [],
// More images: http://images.azk.io
image: {"docker": "azukiapp/node:0.12"},
// Steps to execute before running instances
provision: [
"npm install",
],
workdir: "/azk/#{manifest.dir}",
shell: "/bin/bash",
command: ["npm", "start"],
wait: {"retry": 20, "timeout": 1000},
mounts: {
'/azk/#{manifest.dir}': path("."),
'/azk/#{manifest.dir}/node_modules': persistent("node-modu
Other things that you might
be interested in
Dokku, Deis, Flynn, Fabric8, Tsuru, Empire, PAZ,
Paasta, Cocaine, AWSbox
Thanks!
https://github.com/dhilipsiva/talks
Copyright © 2016 dhilipsiva
This copy is released under the MIT License
Source Code
Questions
http://dhilipsiva.com
dhilipsiva@gmail.com

More Related Content

PDF
CoreOS @ summer meetup in Utrecht
PDF
Container-relevant Upstream Kernel Developments
PDF
Docker n co
PDF
Containerd Internals: Building a Core Container Runtime
PDF
Ansible docker
PDF
Scalability and Performance of CNS 3.6
PPTX
CoreOS Intro
PDF
Gluster and Kubernetes
CoreOS @ summer meetup in Utrecht
Container-relevant Upstream Kernel Developments
Docker n co
Containerd Internals: Building a Core Container Runtime
Ansible docker
Scalability and Performance of CNS 3.6
CoreOS Intro
Gluster and Kubernetes

What's hot (20)

PPTX
Docker and kubernetes_introduction
PPTX
Kubernetes Introduction
PDF
Containerd Project Update: FOSDEM 2018
PDF
KubeCon 2017: Kubernetes from Dev to Prod
PDF
Endocode Kubernetes Meetup: Architecture Patterns for Microservices in Kubern...
PDF
CoreOS Overview
PDF
Continuous integration with Docker and Ansible
PPTX
Kubernetes
PDF
CoreOS Overview
PDF
Hands On Gluster with Jeff Darcy
PDF
Docker 1.11 @ Docker SF Meetup
PDF
Gluster Containerized Storage for Cloud Applications
PDF
Gluster as Native Storage for Containers - past, present and future
PDF
Docker Swarm 0.2.0
PDF
Fedora Atomic Host
PDF
Embedding Containerd For Fun and Profit
PDF
Containerize! Between Docker and Jube.
PDF
Docker orchestration using core os and ansible - Ansible IL 2015
PDF
Scale out, with Kubernetes (k8s)
PPTX
Containerd internals: building a core container runtime
Docker and kubernetes_introduction
Kubernetes Introduction
Containerd Project Update: FOSDEM 2018
KubeCon 2017: Kubernetes from Dev to Prod
Endocode Kubernetes Meetup: Architecture Patterns for Microservices in Kubern...
CoreOS Overview
Continuous integration with Docker and Ansible
Kubernetes
CoreOS Overview
Hands On Gluster with Jeff Darcy
Docker 1.11 @ Docker SF Meetup
Gluster Containerized Storage for Cloud Applications
Gluster as Native Storage for Containers - past, present and future
Docker Swarm 0.2.0
Fedora Atomic Host
Embedding Containerd For Fun and Profit
Containerize! Between Docker and Jube.
Docker orchestration using core os and ansible - Ansible IL 2015
Scale out, with Kubernetes (k8s)
Containerd internals: building a core container runtime
Ad

Viewers also liked (20)

PDF
DevOps - A Gentle Introduction
PDF
Docker swarm introduction
PDF
Container Orchestrator Smackdown @ContinousLifecycle
PDF
Hash Functions: lecture series by Ahto Buldas
PDF
Overview of Microservices
PDF
Building a serverless app
PDF
Lambda Functions in Java 8
PDF
Choosing Between Cross Platform of Native Development
PPTX
DevOps Fundamentals: A perspective on DevOps Culture
PDF
7 best quotes on dev ops
PPTX
Mongo db
PPTX
Better java with design
PPTX
Introduction to chef
PPTX
Angular js
PDF
Advanced Debugging Using Java Bytecodes
PDF
Docker by Example - Quiz
PDF
Java Concurrency by Example
PDF
Software Architecture - Quiz Questions
PDF
Refactoring for Software Design Smells - Tech Talk
PDF
Docker Networking with Container Orchestration Engines [Docker Meetup Santa C...
DevOps - A Gentle Introduction
Docker swarm introduction
Container Orchestrator Smackdown @ContinousLifecycle
Hash Functions: lecture series by Ahto Buldas
Overview of Microservices
Building a serverless app
Lambda Functions in Java 8
Choosing Between Cross Platform of Native Development
DevOps Fundamentals: A perspective on DevOps Culture
7 best quotes on dev ops
Mongo db
Better java with design
Introduction to chef
Angular js
Advanced Debugging Using Java Bytecodes
Docker by Example - Quiz
Java Concurrency by Example
Software Architecture - Quiz Questions
Refactoring for Software Design Smells - Tech Talk
Docker Networking with Container Orchestration Engines [Docker Meetup Santa C...
Ad

Similar to Container (Docker) Orchestration Tools (20)

PDF
Docker by Example - Basics
PPTX
Docker Introductory workshop
PPTX
Amazon Web Services and Docker: from developing to production
PDF
Docker, c'est bonheur !
PDF
Docker by Example - Basics
PDF
Developing and Deploying PHP with Docker
PPTX
Architecting .NET Applications for Docker and Container Based Deployments
PDF
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
PDF
How to create your own hack environment
PDF
Docker module 1
PPTX
Docker Starter Pack
PPTX
Docker Security workshop slides
PDF
Making a small QA system with Docker
PDF
The Dockerfile Explosion and the Need for Higher Level Tools by Gareth Rushgrove
PDF
Docker for mere mortals
PDF
From development environments to production deployments with Docker, Compose,...
KEY
Rapid Prototyping FTW!!!
PDF
Docker for Ruby Developers
PPTX
Running Docker in Development & Production (#ndcoslo 2015)
PPTX
Docker - Der Wal in der Kiste
Docker by Example - Basics
Docker Introductory workshop
Amazon Web Services and Docker: from developing to production
Docker, c'est bonheur !
Docker by Example - Basics
Developing and Deploying PHP with Docker
Architecting .NET Applications for Docker and Container Based Deployments
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
How to create your own hack environment
Docker module 1
Docker Starter Pack
Docker Security workshop slides
Making a small QA system with Docker
The Dockerfile Explosion and the Need for Higher Level Tools by Gareth Rushgrove
Docker for mere mortals
From development environments to production deployments with Docker, Compose,...
Rapid Prototyping FTW!!!
Docker for Ruby Developers
Running Docker in Development & Production (#ndcoslo 2015)
Docker - Der Wal in der Kiste

More from Dhilipsiva DS (12)

PDF
Introduction To DevOps Workshop @ New Horizon College
PDF
Build, deploy and scale: Django, GraphQL and SPA (DjangoCon EU 2021)
PDF
Deploy your Python code on Azure Functions
PDF
Garuda: Automagically Exposing Djagno ORM over gRPC for microservices written...
PDF
AWS LearnUp - Intro to AWS Services - Venturesity
PDF
Python Workshop Day - 2 (REVA University)
PDF
Full-Stack Development
PDF
BangML Meetup 1: The Path to Becoming an Machine Learning Expert
PDF
Architecture @ Appknox
PDF
Microservices with Swagger, Flask and Docker
PPT
PPT
Introduction To DevOps Workshop @ New Horizon College
Build, deploy and scale: Django, GraphQL and SPA (DjangoCon EU 2021)
Deploy your Python code on Azure Functions
Garuda: Automagically Exposing Djagno ORM over gRPC for microservices written...
AWS LearnUp - Intro to AWS Services - Venturesity
Python Workshop Day - 2 (REVA University)
Full-Stack Development
BangML Meetup 1: The Path to Becoming an Machine Learning Expert
Architecture @ Appknox
Microservices with Swagger, Flask and Docker

Recently uploaded (20)

PPTX
bas. eng. economics group 4 presentation 1.pptx
PPTX
Strings in CPP - Strings in C++ are sequences of characters used to store and...
PPTX
Lecture Notes Electrical Wiring System Components
PPTX
M Tech Sem 1 Civil Engineering Environmental Sciences.pptx
DOCX
ASol_English-Language-Literature-Set-1-27-02-2023-converted.docx
PDF
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
PDF
Operating System & Kernel Study Guide-1 - converted.pdf
PPTX
CYBER-CRIMES AND SECURITY A guide to understanding
PDF
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
PPTX
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
PDF
PPT on Performance Review to get promotions
PDF
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
PDF
Arduino robotics embedded978-1-4302-3184-4.pdf
PPTX
Foundation to blockchain - A guide to Blockchain Tech
PPTX
Welding lecture in detail for understanding
PPTX
OOP with Java - Java Introduction (Basics)
PPTX
additive manufacturing of ss316l using mig welding
PDF
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
PPTX
Construction Project Organization Group 2.pptx
PDF
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
bas. eng. economics group 4 presentation 1.pptx
Strings in CPP - Strings in C++ are sequences of characters used to store and...
Lecture Notes Electrical Wiring System Components
M Tech Sem 1 Civil Engineering Environmental Sciences.pptx
ASol_English-Language-Literature-Set-1-27-02-2023-converted.docx
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
Operating System & Kernel Study Guide-1 - converted.pdf
CYBER-CRIMES AND SECURITY A guide to understanding
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
PPT on Performance Review to get promotions
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
Arduino robotics embedded978-1-4302-3184-4.pdf
Foundation to blockchain - A guide to Blockchain Tech
Welding lecture in detail for understanding
OOP with Java - Java Introduction (Basics)
additive manufacturing of ss316l using mig welding
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
Construction Project Organization Group 2.pptx
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...

Container (Docker) Orchestration Tools

  • 1. Docker Container Orchestration @dhilipsiva Tech Lead, Full-Stack & DevOps - @Appknox http://dhilipsiva.com dhilipsiva@gmail.com
  • 2. Container Developers Meetup Bangalore Meetup #3 - Dockerizing Applications Docker Orchestration tools https://www.meetup.com/Container-Developers- Meetup-Bangalore/events/233529360/
  • 3. @dhilipsiva Tech Lead, Full-Stack & DevOps - @Appknox I code for Web, Mobile, Embedded & IoT. Open- Source Fanatic. Big Data & Machine Learning Enthusiast. Dad. Atheist So primarily a Developer + little bit of this & that Jack of all trades & Master of none
  • 4. I have no idea what I am talking about If you think that I got something wrong, then I probably am. So please feel free to correct me After all, it is the mistakes and the lessons we learn from it - are the very things that de ne us Constructive criticism is more than welcomed!
  • 6. Orchestration (computing) Orchestration is the automated arrangement, coordination, and management of computer systems, middleware, and services (From Wikipedia) Process Discovery Scheduling Cluster Management Uni ed way of installing backing services Easy way to Update / rollback applications Etc,.
  • 7. Orchestration Tools Container - Speci c tools Kubernetes, Marathon, Chef Ironfan, Rancher, Helios, Ansible Container, Swarm & SwarmKit, Shipper, Azk, maestro-ng, Maestro, Others Ansible, OpenStack Heat, Python Fabric, Chef, Puppet, Serf, Archipel, governor, Gru, Circuit, Rex
  • 8. Kubernetes There is a detailed Hands-On sessions on Kubernetes this Afternoon Docker Basics is an absolute requirement. If you are not comfortable with Basics of Docker, please attend Anand Gothe's Docker by example Session
  • 9. Marathon Apache Mesos (Or on Mesoshpere's DCOS) Apache Zookeeper Install Marathon on the Cluster Create marathon-demo.json le run curl -X POST http://marthon-master:PORT/v2/apps -d @marathon-demo.json -H "Content-type: application/json"
  • 10. basic-3.json { "id": "marathon-demo", "cmd": "python3 -m http.server 8080", "cpus": 0.5, "mem": 32.0, "container": { "type": "DOCKER", "docker": { "image": "python:3", "network": "BRIDGE", "portMappings": [ { "containerPort": 8080, "hostPort": 0 } ] } } }
  • 13. Rancher Mostly GUI Based You can experiment with it yourself by pulling the Docker Image & running it: docker run -d --restart=always -p 8080:8080 rancher/server
  • 14. Helios Installation # install helios-solo on Debian/Ubuntu $ curl -sSL https://spotify.github.io/helios-apt/go | sudo sh - $ sudo apt-get install helios-solo # install helios-solo on OS X $ brew tap spotify/public && brew install helios-solo # launch a helios cluster in a Docker container $ helios-up # check if it worked and the solo agent is registered $ helios-solo hosts
  • 15. # Create an nginx job using the nginx container image, # exposing it on the host on port 8080 $ helios create nginx:v1 nginx:1.7.1 -p http=80:8080 # Check that the job is listed $ helios jobs # List helios hosts $ helios hosts # Deploy the nginx job on one of the hosts $ helios deploy nginx:v1 <host> # Check the job status $ helios status # Curl the nginx container when it's started running $ curl <host>:8080 # Undeploy the nginx job $ helios undeploy -a nginx:v1 # Remove the nginx job $ helios remove nginx:v1
  • 16. Ansible Container $ [sudo] pip install ansible-container $ ansible-container init $ ansible-container build $ ansible-container run $ ansible-container push $ ansible-container shipit
  • 17. Swarm & SwarmKit Both are very similar Swarm is stand-alone SwarmKit comes with Docker 1.12 (Swarm Mode) # Creating a service $ swarmctl service create --name redis --image redis:3.0.5 $ swarmctl service ls $ swarmctl service inspect redis $ swarmctl service update redis --replicas 6 $ swarmctl service update redis --image redis:3.0.6 # Rolling update $ swarmctl service update redis --image redis:3.0.7 --update
  • 18. Shipper shipper is a fabric for docker - tool for orchestrating docker containers. Supports parallel execution and can generate command line interface from shipper import Shipper, run, command @command def build(tag, path): s = Shipper() s.build(tag=tag, path=path) @command def ps(all=False, running=True): s = Shipper(["host-a", "host-b"]) print s.containers(pretty=True, all=all, running=running)
  • 19. @command def start(image, command, ports=None): if ports: ports = ports.split(",") s = Shipper() s.run(image, command, ports=ports, once=True) @command def stop(image=None): s = Shipper() s.stop(*s.containers(image=image, running=True)) run() $ python env.py ps --all $ python env.py build base ~/images/base $ python env.py build stop --image dev/.*
  • 20. Maestro templates: nodejs: config: command: /usr/bin/node /var/www/app.js ports: - '80' environment: - PORT=80 buildspec: url: github.com/toscanini/docker-nodejs require: mongodb: port: '27017' mongodb: config: command: /usr/bin/mongod --config /etc/mongodb.conf buildspec: url: github.com/toscanini/docker-mongodb
  • 21. Maestro provides the ability to easily launch, orchestrate and manage mulitple Docker containers as single unit. maestro build maestro start [node_name] maestro stop [node_name] maestro run template [commandline] maestro ps maestro destroy
  • 22. Azk Use azk and easily orchestrate development environments on your own machine and then just code. $ brew install azukiapp/azk/azk $ azk agent start $ azk init $ azk start -vv $ azk status # Access http://azkdemo.dev.azk.io
  • 23. /** * Documentation: http://docs.azk.io/Azkfile.js */ // Adds the systems that shape your system systems({ azkdemo: { // Dependent systems depends: [], // More images: http://images.azk.io image: {"docker": "azukiapp/node:0.12"}, // Steps to execute before running instances provision: [ "npm install", ], workdir: "/azk/#{manifest.dir}", shell: "/bin/bash", command: ["npm", "start"], wait: {"retry": 20, "timeout": 1000}, mounts: { '/azk/#{manifest.dir}': path("."), '/azk/#{manifest.dir}/node_modules': persistent("node-modu
  • 24. Other things that you might be interested in Dokku, Deis, Flynn, Fabric8, Tsuru, Empire, PAZ, Paasta, Cocaine, AWSbox
  • 25. Thanks! https://github.com/dhilipsiva/talks Copyright © 2016 dhilipsiva This copy is released under the MIT License Source Code Questions http://dhilipsiva.com dhilipsiva@gmail.com