SlideShare a Scribd company logo
Orchestrating Docker with OpenStack Nov 3rd, 2014
Orchestrating Docker with OpenStack
Compute 
MAGNUM 
Containers as a Service
Project 
SOLUM 
FROM CODE TO MANAGED APP 
“Convert code into a managed application running on 
an OpenStack cloud at the push of a button.”
Key element of the Solum data plane 
Docker Docker
Applying Heat 
Orchestration for Docker API
Docker 
Heat Resource 
Heat API 
VM 
Docker 
Nova resource Nova 
Docker resource 
Container1 
Container2 
Container3 
HOT
Installing the plugin 
git clone https://github.com/openstack/heat 
ln -sf $PWD/heat/heat/contrib/docker/plugin;  
/usr/lib/heat/docker" 
echo “plugin_dirs=$PWD/heat/heat/contrib/docker/plugin” 
>> /etc/heat/heat.conf
Docker 
Heat Resource 
Heat API 
VM 
Docker 
Nova resource Nova 
Docker resource 
Container1 
Container2 
Container3 
HOT
Docker 
Heat Resource 
Heat API 
VM 
Docker 
Nova resource Nova 
Docker resource 
Container1 
Container2 
Container3 
HOT 
1. Heat provides a Docker resource 
2. Docker resource communicates 
directly to Docker 
3. Templates may glue Nova and 
Docker resources 
4. Can deploy containers on top of 
VMs or bare-metal instances.
Heat: Cirros 
heat_template_version: 2013-05-23 
description: Single compute instance running cirros in a Docker 
container. 
resources: 
my_instance: 
type: OS::Nova::Server 
properties: 
key_name: ewindisch_key 
image: ubuntu-precise 
flavor: m1.large 
user_data: #include https://get.docker.io 
my_docker_container: 
type: DockerInc::Docker::Container 
docker_endpoint: { get_attr: [my_instance, first_address] } 
image: cirros
Applying Heat 
Heat API 
VM 
Docker 
Nova resource Nova 
Docker resource 
Container1 
Container2 
Container3 
HOT
$ cat template.yml 
heat_template_version: 2013-05-23 
description: Single compute instance running cirros in a Docker 
container. 
resources: 
my_instance: 
type: OS::Nova::Server 
properties: 
key_name: ewindisch_key 
image: ubuntu-precise 
flavor: m1.large 
user_data: #include https://get.docker.io 
my_docker_container: 
type: DockerInc::Docker::Container 
docker_endpoint: { get_attr: [my_instance, first_address] } 
image: cirros 
$ heat stack-create -f template.yml docker 
Heat API 
VM 
Docker 
Nova resource Nova 
Docker resource 
Container1 
Container2 
Container3 
HOT 
Applying Heat
Heat: Dockenstack 
heat_template_version: 2013-05-23 
description: Single compute instance running Tempest 
resources: 
my_instance: 
type: OS::Nova::Server 
properties: 
key_name: ewindisch_key 
image: ubuntu-precise 
flavor: m1.large 
user_data: #include https://get.docker.io 
my_docker_container: 
type: DockerInc::Docker::Container 
properties: 
docker_endpoint: { get_attr: [my_instance, first_address] } 
image: dockenstack 
privileged: true 
cmd: /opt/dockenstack/bin/tempest
heat_template_version: 2013-05-23 
description: Two containers, one host with shared volumes 
resources: 
my_instance: 
type: OS::Nova::Server 
properties: 
key_name: ewindisch_key 
image: ubuntu-precise 
flavor: m1.large 
user_data: #include https://get.docker.io 
ftp_container: 
type: DockerInc::Docker::Container 
properties: 
docker_endpoint: { get_attr: [my_instance, first_address] } 
image: mikz/vsftpd 
ports: [ “21:21” ] 
volumes: [ “/ftp” ] 
name: “FTP” 
apache_container: 
type: DockerInc::Docker::Container 
properties: 
docker_endpoint: { get_attr: [my_instance, first_address] } 
image: fedora/apache 
ports: [ “80:80” ] 
volumes-from: “FTP” 
cmd: “rm -rf /var/www; ln -s /ftp /var/www; /run-apache.sh”
Resources: Heat 
• http://blog.oddbit.com/2014/08/30/docker-plugin-for- 
openstack-he/ 
• http://techs.enovance.com/7104/multi-tenant-docker- 
with-openstack-heat
MAGNUM 
Containers as a Service 
a new service of the OpenStack Compute program
The Containers Team 
Working Group of the Compute Program
The Containers Team 
Working Group of the Compute Program 
• Operating underneath Compute program 
• Outlined a proposal for Magnum (Nova Mid-cycle) 
• Magnum would directly orchestrate containers 
• Would leverage all benefits and features unique to 
containers. 
• It would be the “nova of containers” 
• It could use Nova to spawn instances to hold 
containers. 
• Those instances may be VMs, Baremetal, or 
Containers.
See Adrian Otto’s presentation: 
Containers for Multi-cloud Apps 
Tomorrow: 17:20
Nova Integration 
Docker plugin for Nova
Awesome People 
Ian Main (Red Hat) 
Chris Alfonso (Red Hat) 
Davanum ‘dims’ (IBM) 
ChangBo Guo 
Julien Vey (Numergy) 
Aaron Rosen (Nicera) 
Derek Higgins (Red Hat) 
Paul Czarkowski (Rackspace) 
Daniel Kuffner 
Pedro R Marques (Juniper) 
Lars Kellogg-Stedman 
(Red_Hat) 
Sam Alba (Docker) 
& more…
What? 
Enables control of 
Docker via OpenStack: 
• Nova API 
• Horizon UI 
Supports: 
• launch 
• terminate 
• reboot 
• serial console 
• snapshot 
• Glance 
• Neutron 
• Pause/unpause 
https://wiki.openstack.org/wiki/ 
HypervisorSupportMatrix
Identity Crisis
Nova doesn’t… 
Link container networks 
Pass environment variables 
Specify working directories 
Create docker-volumes 
Share docker-volumes between containers 
Arbitrary commands 
Arbitrary command-arguments 
Pass devices 
Nova is a machine abstraction, not a process one.
Docker doesn’t… 
• Support mounting devices (unprivileged) 
• Live-migration is future-speak 
• Boot from block devices (natively - it’s possible…) 
• Support Glance natively 
• PCI pass-through
Havana & Icehouse 
Image Management 
(at-release)
Havana & Icehouse 
Image Management 
(at-release) 
• docker-registry worked as a proxy 
• Users had to upload through 
docker-registry. 
• docker pulls images through the 
docker-registry proxy
Havana & Icehouse 
Image Management 
(at-release)
Havana & Icehouse 
Image Management 
(at-release) 
• Glance was only used to provide 
visibility of Docker images for Nova.
Havana & Icehouse 
Image Management 
(at-release) 
• Glance was only used to provide 
visibility of Docker images for Nova. 
• Users could not upload through 
Glance directly
Havana & Icehouse 
Image Management 
(at-release) 
• Glance was only used to provide 
visibility of Docker images for Nova. 
• Users could not upload through 
Glance directly 
• Making that work would require a 
special procedure for glance uploads.
so… we took out the 
docker-registry instead.
Just Enough Docker
Just Enough Docker
Just Enough Docker 
• A subset of Nova features…
Just Enough Docker 
• A subset of Nova features… 
• A subset of Docker features…
Just Enough Docker 
• A subset of Nova features… 
• A subset of Docker features… 
• Enough for Nova to allow running 
Docker-in-Docker.
Just Enough Docker 
• A subset of Nova features… 
• A subset of Docker features… 
• Enough for Nova to allow running 
Docker-in-Docker. 
• DinD retains most performance 
benefits of Docker.
Just Enough Docker 
• A subset of Nova features… 
• A subset of Docker features… 
• Enough for Nova to allow running 
Docker-in-Docker. 
• DinD retains most performance 
benefits of Docker. 
• DinD is Docker and everything 
you love about Docker.
OpenStack Docker 
Nova 
nova 
docker
OpenStack Docker 
Nova 
nova 
docker 
Docker
OpenStack Docker 
Nova 
nova 
docker 
Docker 
OpenStack API 
Docker API
OpenStack Docker 
Nova 
nova 
docker 
Docker 
OpenStack API 
Docker API Docker API
Docker
Kubernetes Heat 
Docker 
Solum OpenShift 
Mesos CloudFoundry 
Magnum
neutron nova-api 
nova-compute 
VM 
VM 
docker 
docker 
Hypervisor 
container 
container
neutron nova-api
neutron nova-api
neutron nova-api 
nova-compute 
Docker 
container 
container
neutron nova-api 
nova-compute 
Docker 
container 
container 
nova-compute 
VM 
VM 
docker 
docker 
Hypervisor 
container 
container
Hybrid Nova configuration 
neutron nova-api 
nova-compute 
Docker 
container 
container 
nova-compute 
VM 
VM 
docker 
docker 
Hypervisor 
container 
container
neutron nova-api 
nova-compute 
Docker 
container 
container 
nova-compute 
VM 
VM 
docker 
docker 
Hypervisor 
container 
container 
nova-compute 
Ironic 
Machine docker 
container 
container
Hybrid Nova configuration + Ironic 
neutron nova-api 
nova-compute 
Docker 
container 
container 
nova-compute 
VM 
VM 
docker 
docker 
Hypervisor 
container 
container 
nova-compute 
Ironic 
Machine docker 
container 
container
nova-api 
nova-compute 
Docker 
container docker 
container 
container
nova-api 
nova-compute 
Docker 
container docker 
container 
container
nova-api 
nova-compute 
Docker 
container docker 
container 
container 
Kubernetes 
Heat 
Mesos 
CloudFoundry 
Magnum
Install the plugin 
mkdir git-co; cd git-co" 
git clone https://github.com/stackforge/nova-docker" 
cd nova-driver" 
python setup.py install
Configure Nova 
Set in nova.conf:" 
compute_driver=novadocker.virt.docker.DockerDriver"
Putting an image into your repository 
docker pull cirros" 
docker save cirros | glance image-create  
--is-public=True  
--container-format=docker  
--disk-format=raw  
--name cirros
‘nova boot’
Networking 
Nova 
Network
Please welcome: 
Ian Main
Testing - Running & Passing
Testing - Running & Passing 
- Get as many tests passing as possible.! 
- Now running 1726 tests, 0 failures.! 
- Turned off: 
volumes 
resizing & suspending 
rescue! 
! ! migrations.
Working Upstream
Working Upstream 
• Added pause and unpause support for docker containers. 
• Well accepted into the Docker project. 
• Dynamic device support needed for Cinder volumes. 
• First API that modifies running containers. 
• Docker community wants the user experience to be right. 
• It will land, just need to get it right
Cinder Volumes 
Use cases:! 
• Direct access to block device – not common.! 
• Mounting file systems.! 
- Possible security issues.! 
- Different from VMs.! 
- Privileged containers.! 
- FUSE filesystem support through user namespaces.! 
• PoC of boot from volume.
KILO Nova-Docker
KILO
KILO 
- Cinder support
KILO 
- Cinder support 
- Security groups (merged)
KILO 
- Cinder support 
- Security groups (merged) 
- docker-py (merged)
KILO 
- Cinder support 
- Security groups (merged) 
- docker-py (merged) 
- privileged containers
KILO 
- Cinder support 
- Security groups (merged) 
- docker-py (merged) 
- privileged containers 
- more +2 contributors
use our code… 
Fix our Bugs!
Q & A 
Eric Windisch 
<erw>@freenode 
@ewindisch 
Ian Main 
<slower>@freenode

More Related Content

PDF
[Open stack] heat + docker
PDF
Practical Docker for OpenStack (Juno Summit - May 15th, 2014)
PDF
Running Docker with OpenStack | Docker workshop #1
PDF
Kubernetes Hands-On Guide
PDF
Webinar container management in OpenStack
PPTX
Openstack Magnum: Container-as-a-Service
PPTX
Scaling Docker Containers using Kubernetes and Azure Container Service
PPTX
Docker for Multi-Cloud Apps
[Open stack] heat + docker
Practical Docker for OpenStack (Juno Summit - May 15th, 2014)
Running Docker with OpenStack | Docker workshop #1
Kubernetes Hands-On Guide
Webinar container management in OpenStack
Openstack Magnum: Container-as-a-Service
Scaling Docker Containers using Kubernetes and Azure Container Service
Docker for Multi-Cloud Apps

What's hot (20)

PDF
OpenStack - Docker - Rackspace HQ
PPTX
Tectonic Summit 2016: Kubernetes 1.5 and Beyond
PDF
DevOps in AWS with Kubernetes
PDF
Kubernetes Architecture and Introduction – Paris Kubernetes Meetup
PDF
Rex gke-clustree
PDF
Using Docker with OpenStack - Hands On!
PDF
OpenStack Magnum
PDF
Docker for Java Developers
PPTX
Learn kubernetes in 90 minutes
PDF
Container Orchestration Integration: OpenStack Kuryr
PDF
Docker Swarm Meetup (15min lightning)
PDF
Scaling Microservices with Kubernetes
PDF
Bare Metal to OpenStack with Razor and Chef
PDF
Docker worshop @Twitter - How to use your own private registry
PPTX
Docker & Kubernetes intro
PPTX
Docker Ecosystem on Azure
PDF
The state of the swarm
PDF
Docker From Scratch
PPTX
Introduction kubernetes 2017_12_24
PDF
Kubernetes 101 and Fun
OpenStack - Docker - Rackspace HQ
Tectonic Summit 2016: Kubernetes 1.5 and Beyond
DevOps in AWS with Kubernetes
Kubernetes Architecture and Introduction – Paris Kubernetes Meetup
Rex gke-clustree
Using Docker with OpenStack - Hands On!
OpenStack Magnum
Docker for Java Developers
Learn kubernetes in 90 minutes
Container Orchestration Integration: OpenStack Kuryr
Docker Swarm Meetup (15min lightning)
Scaling Microservices with Kubernetes
Bare Metal to OpenStack with Razor and Chef
Docker worshop @Twitter - How to use your own private registry
Docker & Kubernetes intro
Docker Ecosystem on Azure
The state of the swarm
Docker From Scratch
Introduction kubernetes 2017_12_24
Kubernetes 101 and Fun
Ad

Viewers also liked (20)

PDF
ContainerDayVietnam2016: Containers with OpenStack
PDF
High Availability from the DevOps side - OpenStack Summit Portland
PPTX
Openstack ha
PPTX
Watcher, a Resource Manager for OpenStack: Plans for the N-release and Beyond
PPTX
Openstackha 130925132534-phpapp02
PDF
OpenStack Resource Scheduling
PDF
Openstack Scheduler and Scalability Issue
PDF
Fred explains IPv6
PDF
IPv6 Best Practice
PPTX
State of Containers in OpenStack
PPTX
Open stack HA - Theory to Reality
PDF
resource on openstack
PDF
10 Good Reasons: NetApp for DevOps
PPTX
OpenStack HA
PPTX
Openstack Installation (ver. liberty)
PPT
IPv6 theoryfinalx
PDF
Swiss IPv6 Council: IPv6 in der Cloud - Case Study der cloudscale.ch
PDF
High Availability for OpenStack
PDF
What's really the difference between a VM and a Container?
PDF
Cisco IPv6 Tutorial
ContainerDayVietnam2016: Containers with OpenStack
High Availability from the DevOps side - OpenStack Summit Portland
Openstack ha
Watcher, a Resource Manager for OpenStack: Plans for the N-release and Beyond
Openstackha 130925132534-phpapp02
OpenStack Resource Scheduling
Openstack Scheduler and Scalability Issue
Fred explains IPv6
IPv6 Best Practice
State of Containers in OpenStack
Open stack HA - Theory to Reality
resource on openstack
10 Good Reasons: NetApp for DevOps
OpenStack HA
Openstack Installation (ver. liberty)
IPv6 theoryfinalx
Swiss IPv6 Council: IPv6 in der Cloud - Case Study der cloudscale.ch
High Availability for OpenStack
What's really the difference between a VM and a Container?
Cisco IPv6 Tutorial
Ad

Similar to Orchestrating Docker with OpenStack (20)

PDF
Docker OpenStack - 3/27/2014
PPTX
Docker with OpenStack
PDF
Practical Docker for OpenStack - NYC / PHL OpenStack meetup (4-23-2014)
PPT
OpenStack with-docker-team-17
PPTX
Docker in OpenStack
PDF
Cloud foundry Docker Openstack - Leading Open Source Triumvirate
PPTX
Managing Container Clusters in OpenStack Native Way
PDF
Docker Meetup Bangalore - Docker + Openstack
PPTX
Docker OpenStack Cloud Foundry
PDF
Docker and OpenStack at Rackspace
PPTX
Private Cloud with Open Stack, Docker
PDF
Dockerizing OpenStack for High Availability
PDF
Docker with openstack
PDF
OpenStack on OpenStack
PDF
Robert collins openstack on openstack 201304162
PDF
Docker Presentation at the OpenStack Austin Meetup | 2013-09-12
PDF
Application Deployment on Openstack
PPTX
Pairs OpenStack Summit Summary
PDF
Triple o overview
PDF
How to operate containerized OpenStack
Docker OpenStack - 3/27/2014
Docker with OpenStack
Practical Docker for OpenStack - NYC / PHL OpenStack meetup (4-23-2014)
OpenStack with-docker-team-17
Docker in OpenStack
Cloud foundry Docker Openstack - Leading Open Source Triumvirate
Managing Container Clusters in OpenStack Native Way
Docker Meetup Bangalore - Docker + Openstack
Docker OpenStack Cloud Foundry
Docker and OpenStack at Rackspace
Private Cloud with Open Stack, Docker
Dockerizing OpenStack for High Availability
Docker with openstack
OpenStack on OpenStack
Robert collins openstack on openstack 201304162
Docker Presentation at the OpenStack Austin Meetup | 2013-09-12
Application Deployment on Openstack
Pairs OpenStack Summit Summary
Triple o overview
How to operate containerized OpenStack

More from Erica Windisch (10)

PDF
Debugging & Profiling of AWS Lambda: ServerlessConf - IOpipe
PPTX
Embracing Serverless Ops (Lightning Talk)
PDF
Ops for NoOps - Operational Challenges for Serverless Apps
PDF
Building Composable Serverless Apps with IOpipe
PDF
Patterns for Secure Containerized Applications (Docker)
PDF
Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ
PDF
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
PDF
Things will Change - Usenix Keynote UCMS'14
PDF
Deploying Docker (Provisioning /w Docker + Chef/Puppet) - DevopsDaysPGH
PDF
Provisioning & Deploying with Docker
Debugging & Profiling of AWS Lambda: ServerlessConf - IOpipe
Embracing Serverless Ops (Lightning Talk)
Ops for NoOps - Operational Challenges for Serverless Apps
Building Composable Serverless Apps with IOpipe
Patterns for Secure Containerized Applications (Docker)
Docker for Developers: Dev, Test, Deploy @ BucksCo Devops at MeetMe HQ
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
Things will Change - Usenix Keynote UCMS'14
Deploying Docker (Provisioning /w Docker + Chef/Puppet) - DevopsDaysPGH
Provisioning & Deploying with Docker

Recently uploaded (20)

PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
Big Data Technologies - Introduction.pptx
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PPTX
A Presentation on Artificial Intelligence
PDF
Electronic commerce courselecture one. Pdf
PPT
Teaching material agriculture food technology
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
KodekX | Application Modernization Development
PDF
NewMind AI Monthly Chronicles - July 2025
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Empathic Computing: Creating Shared Understanding
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
Encapsulation_ Review paper, used for researhc scholars
Big Data Technologies - Introduction.pptx
“AI and Expert System Decision Support & Business Intelligence Systems”
20250228 LYD VKU AI Blended-Learning.pptx
The Rise and Fall of 3GPP – Time for a Sabbatical?
Mobile App Security Testing_ A Comprehensive Guide.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
A Presentation on Artificial Intelligence
Electronic commerce courselecture one. Pdf
Teaching material agriculture food technology
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Reach Out and Touch Someone: Haptics and Empathic Computing
KodekX | Application Modernization Development
NewMind AI Monthly Chronicles - July 2025
Digital-Transformation-Roadmap-for-Companies.pptx
MYSQL Presentation for SQL database connectivity
Empathic Computing: Creating Shared Understanding
Dropbox Q2 2025 Financial Results & Investor Presentation

Orchestrating Docker with OpenStack

  • 1. Orchestrating Docker with OpenStack Nov 3rd, 2014
  • 4. Project SOLUM FROM CODE TO MANAGED APP “Convert code into a managed application running on an OpenStack cloud at the push of a button.”
  • 5. Key element of the Solum data plane Docker Docker
  • 7. Docker Heat Resource Heat API VM Docker Nova resource Nova Docker resource Container1 Container2 Container3 HOT
  • 8. Installing the plugin git clone https://github.com/openstack/heat ln -sf $PWD/heat/heat/contrib/docker/plugin; /usr/lib/heat/docker" echo “plugin_dirs=$PWD/heat/heat/contrib/docker/plugin” >> /etc/heat/heat.conf
  • 9. Docker Heat Resource Heat API VM Docker Nova resource Nova Docker resource Container1 Container2 Container3 HOT
  • 10. Docker Heat Resource Heat API VM Docker Nova resource Nova Docker resource Container1 Container2 Container3 HOT 1. Heat provides a Docker resource 2. Docker resource communicates directly to Docker 3. Templates may glue Nova and Docker resources 4. Can deploy containers on top of VMs or bare-metal instances.
  • 11. Heat: Cirros heat_template_version: 2013-05-23 description: Single compute instance running cirros in a Docker container. resources: my_instance: type: OS::Nova::Server properties: key_name: ewindisch_key image: ubuntu-precise flavor: m1.large user_data: #include https://get.docker.io my_docker_container: type: DockerInc::Docker::Container docker_endpoint: { get_attr: [my_instance, first_address] } image: cirros
  • 12. Applying Heat Heat API VM Docker Nova resource Nova Docker resource Container1 Container2 Container3 HOT
  • 13. $ cat template.yml heat_template_version: 2013-05-23 description: Single compute instance running cirros in a Docker container. resources: my_instance: type: OS::Nova::Server properties: key_name: ewindisch_key image: ubuntu-precise flavor: m1.large user_data: #include https://get.docker.io my_docker_container: type: DockerInc::Docker::Container docker_endpoint: { get_attr: [my_instance, first_address] } image: cirros $ heat stack-create -f template.yml docker Heat API VM Docker Nova resource Nova Docker resource Container1 Container2 Container3 HOT Applying Heat
  • 14. Heat: Dockenstack heat_template_version: 2013-05-23 description: Single compute instance running Tempest resources: my_instance: type: OS::Nova::Server properties: key_name: ewindisch_key image: ubuntu-precise flavor: m1.large user_data: #include https://get.docker.io my_docker_container: type: DockerInc::Docker::Container properties: docker_endpoint: { get_attr: [my_instance, first_address] } image: dockenstack privileged: true cmd: /opt/dockenstack/bin/tempest
  • 15. heat_template_version: 2013-05-23 description: Two containers, one host with shared volumes resources: my_instance: type: OS::Nova::Server properties: key_name: ewindisch_key image: ubuntu-precise flavor: m1.large user_data: #include https://get.docker.io ftp_container: type: DockerInc::Docker::Container properties: docker_endpoint: { get_attr: [my_instance, first_address] } image: mikz/vsftpd ports: [ “21:21” ] volumes: [ “/ftp” ] name: “FTP” apache_container: type: DockerInc::Docker::Container properties: docker_endpoint: { get_attr: [my_instance, first_address] } image: fedora/apache ports: [ “80:80” ] volumes-from: “FTP” cmd: “rm -rf /var/www; ln -s /ftp /var/www; /run-apache.sh”
  • 16. Resources: Heat • http://blog.oddbit.com/2014/08/30/docker-plugin-for- openstack-he/ • http://techs.enovance.com/7104/multi-tenant-docker- with-openstack-heat
  • 17. MAGNUM Containers as a Service a new service of the OpenStack Compute program
  • 18. The Containers Team Working Group of the Compute Program
  • 19. The Containers Team Working Group of the Compute Program • Operating underneath Compute program • Outlined a proposal for Magnum (Nova Mid-cycle) • Magnum would directly orchestrate containers • Would leverage all benefits and features unique to containers. • It would be the “nova of containers” • It could use Nova to spawn instances to hold containers. • Those instances may be VMs, Baremetal, or Containers.
  • 20. See Adrian Otto’s presentation: Containers for Multi-cloud Apps Tomorrow: 17:20
  • 21. Nova Integration Docker plugin for Nova
  • 22. Awesome People Ian Main (Red Hat) Chris Alfonso (Red Hat) Davanum ‘dims’ (IBM) ChangBo Guo Julien Vey (Numergy) Aaron Rosen (Nicera) Derek Higgins (Red Hat) Paul Czarkowski (Rackspace) Daniel Kuffner Pedro R Marques (Juniper) Lars Kellogg-Stedman (Red_Hat) Sam Alba (Docker) & more…
  • 23. What? Enables control of Docker via OpenStack: • Nova API • Horizon UI Supports: • launch • terminate • reboot • serial console • snapshot • Glance • Neutron • Pause/unpause https://wiki.openstack.org/wiki/ HypervisorSupportMatrix
  • 25. Nova doesn’t… Link container networks Pass environment variables Specify working directories Create docker-volumes Share docker-volumes between containers Arbitrary commands Arbitrary command-arguments Pass devices Nova is a machine abstraction, not a process one.
  • 26. Docker doesn’t… • Support mounting devices (unprivileged) • Live-migration is future-speak • Boot from block devices (natively - it’s possible…) • Support Glance natively • PCI pass-through
  • 27. Havana & Icehouse Image Management (at-release)
  • 28. Havana & Icehouse Image Management (at-release) • docker-registry worked as a proxy • Users had to upload through docker-registry. • docker pulls images through the docker-registry proxy
  • 29. Havana & Icehouse Image Management (at-release)
  • 30. Havana & Icehouse Image Management (at-release) • Glance was only used to provide visibility of Docker images for Nova.
  • 31. Havana & Icehouse Image Management (at-release) • Glance was only used to provide visibility of Docker images for Nova. • Users could not upload through Glance directly
  • 32. Havana & Icehouse Image Management (at-release) • Glance was only used to provide visibility of Docker images for Nova. • Users could not upload through Glance directly • Making that work would require a special procedure for glance uploads.
  • 33. so… we took out the docker-registry instead.
  • 36. Just Enough Docker • A subset of Nova features…
  • 37. Just Enough Docker • A subset of Nova features… • A subset of Docker features…
  • 38. Just Enough Docker • A subset of Nova features… • A subset of Docker features… • Enough for Nova to allow running Docker-in-Docker.
  • 39. Just Enough Docker • A subset of Nova features… • A subset of Docker features… • Enough for Nova to allow running Docker-in-Docker. • DinD retains most performance benefits of Docker.
  • 40. Just Enough Docker • A subset of Nova features… • A subset of Docker features… • Enough for Nova to allow running Docker-in-Docker. • DinD retains most performance benefits of Docker. • DinD is Docker and everything you love about Docker.
  • 41. OpenStack Docker Nova nova docker
  • 42. OpenStack Docker Nova nova docker Docker
  • 43. OpenStack Docker Nova nova docker Docker OpenStack API Docker API
  • 44. OpenStack Docker Nova nova docker Docker OpenStack API Docker API Docker API
  • 46. Kubernetes Heat Docker Solum OpenShift Mesos CloudFoundry Magnum
  • 47. neutron nova-api nova-compute VM VM docker docker Hypervisor container container
  • 50. neutron nova-api nova-compute Docker container container
  • 51. neutron nova-api nova-compute Docker container container nova-compute VM VM docker docker Hypervisor container container
  • 52. Hybrid Nova configuration neutron nova-api nova-compute Docker container container nova-compute VM VM docker docker Hypervisor container container
  • 53. neutron nova-api nova-compute Docker container container nova-compute VM VM docker docker Hypervisor container container nova-compute Ironic Machine docker container container
  • 54. Hybrid Nova configuration + Ironic neutron nova-api nova-compute Docker container container nova-compute VM VM docker docker Hypervisor container container nova-compute Ironic Machine docker container container
  • 55. nova-api nova-compute Docker container docker container container
  • 56. nova-api nova-compute Docker container docker container container
  • 57. nova-api nova-compute Docker container docker container container Kubernetes Heat Mesos CloudFoundry Magnum
  • 58. Install the plugin mkdir git-co; cd git-co" git clone https://github.com/stackforge/nova-docker" cd nova-driver" python setup.py install
  • 59. Configure Nova Set in nova.conf:" compute_driver=novadocker.virt.docker.DockerDriver"
  • 60. Putting an image into your repository docker pull cirros" docker save cirros | glance image-create --is-public=True --container-format=docker --disk-format=raw --name cirros
  • 64. Testing - Running & Passing
  • 65. Testing - Running & Passing - Get as many tests passing as possible.! - Now running 1726 tests, 0 failures.! - Turned off: volumes resizing & suspending rescue! ! ! migrations.
  • 67. Working Upstream • Added pause and unpause support for docker containers. • Well accepted into the Docker project. • Dynamic device support needed for Cinder volumes. • First API that modifies running containers. • Docker community wants the user experience to be right. • It will land, just need to get it right
  • 68. Cinder Volumes Use cases:! • Direct access to block device – not common.! • Mounting file systems.! - Possible security issues.! - Different from VMs.! - Privileged containers.! - FUSE filesystem support through user namespaces.! • PoC of boot from volume.
  • 70. KILO
  • 71. KILO - Cinder support
  • 72. KILO - Cinder support - Security groups (merged)
  • 73. KILO - Cinder support - Security groups (merged) - docker-py (merged)
  • 74. KILO - Cinder support - Security groups (merged) - docker-py (merged) - privileged containers
  • 75. KILO - Cinder support - Security groups (merged) - docker-py (merged) - privileged containers - more +2 contributors
  • 76. use our code… Fix our Bugs!
  • 77. Q & A Eric Windisch <erw>@freenode @ewindisch Ian Main <slower>@freenode