Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Docker San Francisco Meetup April 2015 - The Docker Orchestration Ecosystem on Azure
1. Patrick Chanezon, Docker Inc.
@chanezon
The Docker Ecosystem
With slides from @jpetazzo @timpark @vieux @tnachen @volkerw IBM
on Microsoft Azure
Ride the Whale!
19. Docker now
A platform to build, ship, and run any app, anywhere
docker engine
docker hub
docker-machine
docker-compose
docker-swarm
20. Docker, the community
>700 contributors
~20 core maintainers
>40,000 Dockerized projects on GitHub
>60,000 repositories on Docker Hub
>25000 meetup members,
>140 cities, >50 countries
>2,000,000 downloads of boot2docker
21. Docker Inc, the company
Headcount: ~130
Revenue:
t-shirts and stickers featuring the cool blue whale
SAAS delivered through Docker Hub
Support & Training
soon: Docker Hub Enterprise, behind the firewall
30. More Windows options
• Nano Server
• Hyper-V Containers
http://azure.microsoft.com/blog/2015/04/08/microsoft-unveils-new-container-technologies-for-the-next-generation-cloud
31. Azure Fabric: see you at BUILD!
http://azure.microsoft.com/blog/2015/04/20/announcing-azure-service-fabric-reducing-complexity-in-a-hyper-scale-world/
49. Setup using the hosted discovery service
• Create a cluster:
$ swarm create
• Add nodes to a cluster:
$ swarm join --add=<node_ip> token://<token>
• Start Swarm
$ swarm manage --addr=<swarm_ip> token://<token>
Or you can use your own etcd, zookeeper or consul
Contributions are welcome :
50. Resource Management
• Memory
$ docker run -m 1g …
• CPU
$ docker run -c 1 …
• Ports
$ docker run -p 80:80 …
• More to come, ex: network interfaces
51. Constraints
• Standard constraints induced from docker info
docker run -e “constraint:operatingsystem==*fedora*” …
docker run -e “constraint:storagedriver==*aufs*” …
• Custom constraints with host labels
docker -d --label “region==us-east”
docker run -e “constraint:region==us-east” …
• Pin a container to a specific host
docker run –e “constraint:node==ubuntu-2” …
52. Affinities
• Containers affinities
docker run --name web nginx
docker run -e “affinity:container==web” logger
• Containers Anti-affinities
docker run --name redis-master redis
docker run --name redis-slave -e “affinity:container!=redis*”
…
• Images affinities
docker run -e “affinity:image==redis” redis
53. New in 0.2.0: Soft Affinities/Constraints
• Containers affinities
docker run -e “affinity:container~!=—name web nginx
docker run -e “affinity:container==web” logger
• Containers Anti-affinities
docker run --name redis-master redis
docker run --name redis-slave -e “affinity:container!=redis*”
…
• Images affinities
docker run -e “affinity:image==redis” redis
54. Swarm Scheduler
2 steps:
• 1- Apply filters to exclude nodes
- ports
- labels
- health
• 2- Use a strategy to pick the best node
- random
- binpack
- spread
Contributions are welcome :
55. Swarm Beta: Integrations
• Fully integrated with Machine
• Partially integrated with Compose
• Mesos integration has started in collaboration with Mesosphere.
71. Deis (http://deis.io)
• Open source PaaS platform that builds on CoreOS.
• Replicates the popular Heroku devops workflow.
• Primary mechanism for pushing applications is through git.
• Developer experience is not unlike Azure Websites…
• …but is built on Linux so full support for open source stacks.
• Enables us to win migrations from Salesforce to Azure.
• Hackfest in November to enable Deis for Tagboard.
• Enables us to win startups that expect this workflow.
72.
73.
74. tpark:www$ git push deis master
• Git pushes master to deis git remote on endpoint
• Deis senses static web application
• Selects Heroku Buildpack
• Uses buildpack to build application Docker container.
• Pushes this container to a private Docker registry.
• Orchestrates the creation or update of this container
on the cluster.
• Updates routing mesh to route to these containers.
78. tpark:api$ git push deis master
• Git pushes master to deis git remote on endpoint
• Deis senses node.js application
• Selects Heroku node.js Buildpack
• Uses buildpack to build application Docker container.
• Pushes this container to a private Docker registry.
• Orchestrates the creation or update of this container
on the cluster.
• Updates routing mesh to route to these containers.
82. tpark:api$ deis config:set
DATABASE_URL=postgres://user:pass@example.com:54
32/db
• Applications in Deis are configured through environmental
variables.
• MUST READ: http://12factor.net/
• Key point: Code is separated from config.
• Enables generic containers that are configured at runtime.
• Every app container spun up by Deis will have a copy of these
config environmental variables.
83. tpark:api$ deis logs
• Deis automatically rolls and consolidates logs from all
containers.
97. 97
Customer Managed
Service Provider Managed
IBM SoftLayer
Bluemix started as a public PaaS
Bluemix started with a major focus on developer productivity in the public cloud.
Infrastructure as
a Service
Code
Data
Runtime
Middleware
OS
Virtualization
Servers
Storage
Networking
Code
Data
Runtime
Middleware
OS
Virtualization
Servers
Storage
Networking
Platform as
a Service
98. 98
Customer Managed
Service Provider Managed
IBM SoftLayer
We listened. Now we’re evolving to become even more flexible.
Capabilities in Bluemix now span PaaS and IaaS and can be delivered as a public,
dedicated, or on-premises* implementation.
Infrastructure as
a Service
Code
Data
Runtime
Middleware
OS
Virtualization
Servers
Storage
Networking
Code
Data
Runtime
Middleware
OS
Virtualization
Servers
Storage
Networking
Platform as
a Service
*Bluemix Local coming Summer 2015
Built on open
technologies:
99. How does Bluemix work?
Bluemix is underlined by three key open compute technologies: Cloud Foundry, Docker, and
OpenStack. It extends each of these with a growing number of services, robust DevOps tooling,
integration capabilities, and a seamless developer experience.
99
Flexible Compute Options to Run Apps / Services
Instant Runtimes Containers Virtual Machines
Platform Deployment Options that Meet Your Workload Requirements
Bluemix
Public
Bluemix
Dedicated
Bluemix
Local*
DevOps
Tooling Your Own Hosted Apps / Services
Integration and
API Mgmt
Powered by IBM SoftLayer In Your Data Center
+ + +
+ +
+ Always focused on what’s next
Catalog of Services that Extend Apps’ Functionality
Web Data Mobile AnalyticsCognitive IoT Security Yours
+
*Bluemix Local coming Summer 2015
100. Containers in Bluemix
Bluemix now comes with a fully integrated, high performance Docker experience, meaning monitoring,
logging, elasticity, enterprise images, and VM abstraction are all standard.
100
Docker Value IBM Value-add Customer Value
Docker Hub Registry holds a
repository of 75000+ Docker
images
• IBM hosted public registry containing IBM images - linked to
Docker Hub
• Client unique registry available on and off premises
• Enterprise-ready images
Access to the images you require to deploy
containers that meet your business needs and
strategy
Open-source, standardized,
lightweight, self sufficient LXC
container technology
• Enhanced performance with bare metal deployment
• Run images to local datacenter or cloud
• Deployment choice with pSeries & zSeries
Flexibility to choose the right hybrid cloud mix
for your business
Build, ship, and run standardized
containers
• Integrated monitoring & logging
• Elasticity to grow storage & container needs
• Life-cycle management of containers and data volumes
• No VMs to manage
Docker ease of use combined with enterprise-
level integrity and confidence
Container connections using
links and service discovery
• Private network communication
• External IP address
• Subnet Range
Extends and connects Docker containers to
production-ready enterprise environments
109. 10
3
References
• talk about cloud platforms: Managing complexity in giant systems http://www.slideshare.net/chanezon/tackling-
complexity-in-giant-systems-approaches-from-several-cloud-providers
• talk about Devops, the Microsoft Way
http://www.slideshare.net/chanezon/devops-the-microsoft-way
• MS Open Tech https://msopentech.com/ Blog, VM Depot
• P@ Linux on Azure pages https://github.com/chanezon/azure-linux/
• Tim’s CoreOS tutorial https://github.com/timfpark/coreos-azure
• Tim’s Deis documentation
• @jpetazzo’s presentations http://www.slideshare.net/jpetazzo/
• @bcantrill’s deck http://www.slideshare.net/bcantrill/docker-and-the-future-of-containers-in-production
• @vieux deck on Swarm
• @htchen deck on Mesos + Swarm https://speakerdeck.com/tnachen/docker-swarm-plus-mesos
What I learned from these experiences is that there are a set of key challenges in the internet of things.
The first is discovery.
Let’s say we want to build an application that managing the lighting in our home.
We want to it to be able to ask our own personal internet of things for switches and lights.
So the first challenge we have is being able to express those capabilities on devices and be able query for them.