+ All Categories
Home > Technology > Docker Workshop - Orchestrating Docker Containers

Docker Workshop - Orchestrating Docker Containers

Date post: 19-Feb-2017
Category:
Upload: hugo-henley
View: 89 times
Download: 7 times
Share this document with a friend
82
24/11/2016 Docker Workshop - 2nd Day Orchestrating Docker Containers Hugo Arraes Henley - hugohenley at id dot uff dot br 1
Transcript
Page 1: Docker Workshop - Orchestrating Docker Containers

24/11/2016

Docker Workshop - 2nd Day

Orchestrating Docker Containers

Hugo Arraes Henley - hugohenley at id dot uff dot br

1

Page 2: Docker Workshop - Orchestrating Docker Containers

Agenda

✤ Ecosystem - An overview

✤ Rancher

✤ Mesos

✤ Marathon

✤ Service Discovery

✤ Monitoring Systems

✤ CI and Deploy

Page 3: Docker Workshop - Orchestrating Docker Containers

Before we start…

✤ Questions: #workshop-docker at Slack

✤ Urgent questions: ask anytime

✤ We will have a break at 15:45~16:00

✤ Today: 80 slides

✤ Check your cellphones3

Page 4: Docker Workshop - Orchestrating Docker Containers

The Ecosystem

4

Page 5: Docker Workshop - Orchestrating Docker Containers

The Ecosystem

and more…

5

Page 6: Docker Workshop - Orchestrating Docker Containers
Page 7: Docker Workshop - Orchestrating Docker Containers

The Ecosystem

and much more…

7

Page 8: Docker Workshop - Orchestrating Docker Containers

8

Page 9: Docker Workshop - Orchestrating Docker Containers
Page 10: Docker Workshop - Orchestrating Docker Containers

Rancher

✤ Provides a web interface to manage your containers

✤ Helps you to create your own cluster

✤ Helps you to deploy your containerized apps

✤ Natively supports and manages all of your Kubernetes, Mesos, and Swarm clusters.

✤ Easy to install!

Page 11: Docker Workshop - Orchestrating Docker Containers

sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server

https://docs.rancher.com/rancher/v1.2/en/installing-rancher/installing-server/

Page 12: Docker Workshop - Orchestrating Docker Containers
Page 13: Docker Workshop - Orchestrating Docker Containers
Page 14: Docker Workshop - Orchestrating Docker Containers
Page 15: Docker Workshop - Orchestrating Docker Containers
Page 16: Docker Workshop - Orchestrating Docker Containers

16

Page 17: Docker Workshop - Orchestrating Docker Containers
Page 18: Docker Workshop - Orchestrating Docker Containers

https://speakerdeck.com/jbeda/containers-at-scale

Page 19: Docker Workshop - Orchestrating Docker Containers
Page 20: Docker Workshop - Orchestrating Docker Containers

3300 containers/sec

Page 21: Docker Workshop - Orchestrating Docker Containers

Of course it needs orchestration…

Page 22: Docker Workshop - Orchestrating Docker Containers
Page 23: Docker Workshop - Orchestrating Docker Containers

23

Page 24: Docker Workshop - Orchestrating Docker Containers

Mesos

Page 25: Docker Workshop - Orchestrating Docker Containers

Mesos

Page 26: Docker Workshop - Orchestrating Docker Containers
Page 27: Docker Workshop - Orchestrating Docker Containers

https://www.linux.com/news/4-unique-ways-uber-twitter-paypal-and-hubspot-use-apache-mesos

Page 28: Docker Workshop - Orchestrating Docker Containers

Mesos at Twitter

https://mesosphere.com/blog/2014/06/11/how-twitter-uses-mesos-video/

Page 29: Docker Workshop - Orchestrating Docker Containers
Page 30: Docker Workshop - Orchestrating Docker Containers

“In step (1), slave 1 reports to the master that it has 4 CPUs and 4 GB of memory free. The master then invokes the allocation module, which tells it that framework 1 should be offered all available resources.

In step (2), the master sends a resource offer describing these resources to framework 1.

In step (3), the framework’s scheduler replies to the master with information about two tasks to run on the slave, using ⟨2 CPUs, 1 GB RAM⟩ for the first task, and ⟨1 CPUs, 2 GB RAM⟩ for the second task.

Finally, in step (4), the master sends the tasks to the slave, which allocates appropriate resources to the framework’s executor, which in turn launches the two tasks (depicted with dotted borders). Because 1 CPU and 1 GB of RAM are still free, the allocation module may now offer them to framework 2.”

Page 31: Docker Workshop - Orchestrating Docker Containers
Page 32: Docker Workshop - Orchestrating Docker Containers
Page 33: Docker Workshop - Orchestrating Docker Containers
Page 34: Docker Workshop - Orchestrating Docker Containers
Page 35: Docker Workshop - Orchestrating Docker Containers
Page 36: Docker Workshop - Orchestrating Docker Containers
Page 37: Docker Workshop - Orchestrating Docker Containers
Page 38: Docker Workshop - Orchestrating Docker Containers
Page 39: Docker Workshop - Orchestrating Docker Containers
Page 40: Docker Workshop - Orchestrating Docker Containers

CREATING A NEW APP…

Page 41: Docker Workshop - Orchestrating Docker Containers
Page 42: Docker Workshop - Orchestrating Docker Containers

Nice! But how people can access my app if I have no control about where it is running…?

Page 43: Docker Workshop - Orchestrating Docker Containers

SERVICE DISCOVERY

Page 44: Docker Workshop - Orchestrating Docker Containers

44

Page 45: Docker Workshop - Orchestrating Docker Containers
Page 46: Docker Workshop - Orchestrating Docker Containers

4 REDIS INSTANCES

Page 47: Docker Workshop - Orchestrating Docker Containers
Page 48: Docker Workshop - Orchestrating Docker Containers

SCALING DOWN…

Page 49: Docker Workshop - Orchestrating Docker Containers
Page 50: Docker Workshop - Orchestrating Docker Containers

For every new container, a software called registrator sends the list of running containers to the consul server

gliderlabs/registrator

$ docker run -d \ --name=registrator \ --net=host \ --volume=/var/run/docker.sock:/tmp/docker.sock \ gliderlabs/registrator:latest \ consul://localhost:8500

Page 51: Docker Workshop - Orchestrating Docker Containers
Page 52: Docker Workshop - Orchestrating Docker Containers

HAPROXY TEMPLATE

Page 53: Docker Workshop - Orchestrating Docker Containers

http://sirile.github.io/2015/05/18/using-haproxy-and-consul-for-dynamic-service-discovery-on-docker.html

Page 54: Docker Workshop - Orchestrating Docker Containers

Consul template updates your HAProxy configuration file based on what is running!

Page 55: Docker Workshop - Orchestrating Docker Containers

That’s why your clients can access your app, no matter where it's running :)

Page 56: Docker Workshop - Orchestrating Docker Containers

Monitoring

Page 57: Docker Workshop - Orchestrating Docker Containers

57

Page 58: Docker Workshop - Orchestrating Docker Containers
Page 59: Docker Workshop - Orchestrating Docker Containers
Page 60: Docker Workshop - Orchestrating Docker Containers
Page 61: Docker Workshop - Orchestrating Docker Containers
Page 62: Docker Workshop - Orchestrating Docker Containers

“Prometheus collects metrics from configured targets at given intervals, evaluates rule expressions, displays the results, and can trigger alerts if some condition is observed to be true.”

https://www.infoq.com/news/2015/12/dockercon-docker-monitoring

Page 63: Docker Workshop - Orchestrating Docker Containers

https://github.com/vegasbrianc/prometheus

Page 64: Docker Workshop - Orchestrating Docker Containers

Prometheus References

✤ https://developers.soundcloud.com/blog/prometheus-monitoring-at-soundcloud

✤ https://www.brianchristner.io/how-to-setup-prometheus-docker-monitoring/

✤ https://prometheus.io/docs/instrumenting/exporters/

✤ https://www.infoq.com/news/2015/12/dockercon-docker-monitoring

✤ https://github.com/vegasbrianc/prometheus

✤ https://www.brianchristner.io/updated-docker-monitoring-prometheus-grafana/

✤ https://www.ctl.io/developers/blog/post/monitoring-docker-services-with-prometheus/

Page 65: Docker Workshop - Orchestrating Docker Containers

65

Page 66: Docker Workshop - Orchestrating Docker Containers
Page 67: Docker Workshop - Orchestrating Docker Containers
Page 68: Docker Workshop - Orchestrating Docker Containers

RECAP

Page 69: Docker Workshop - Orchestrating Docker Containers

Docker + Mesos + Marathon + Rancher + Consul + Registrator + Consul Template + cAdvisor + Prometheus + Grafana

=

:)

Page 70: Docker Workshop - Orchestrating Docker Containers

DEPLOYING

Page 71: Docker Workshop - Orchestrating Docker Containers

YOU WILL NEED A CI

Page 72: Docker Workshop - Orchestrating Docker Containers
Page 73: Docker Workshop - Orchestrating Docker Containers
Page 74: Docker Workshop - Orchestrating Docker Containers
Page 75: Docker Workshop - Orchestrating Docker Containers
Page 76: Docker Workshop - Orchestrating Docker Containers

PUTTING EVERYTHING TOGETHER…

Page 77: Docker Workshop - Orchestrating Docker Containers

registrator

consul-templateDev

User

Page 78: Docker Workshop - Orchestrating Docker Containers

Docker + Mesos + Marathon + Rancher + Consul + Registrator + Consul Template + cAdvisor + Prometheus + Grafana + Jenkins

=

:)

Page 79: Docker Workshop - Orchestrating Docker Containers
Page 80: Docker Workshop - Orchestrating Docker Containers

Remember: there is no silver bullet!

Page 81: Docker Workshop - Orchestrating Docker Containers

81

Page 82: Docker Workshop - Orchestrating Docker Containers

Thank you!

82

hugohenley at id dot uff dot br


Recommended