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, Kubernetes, and Google Cloud
PDF
時代在變 Docker 要會:台北 Docker 一日入門篇
PPTX
Docker Introduction and its Usage in Machine Learning
PDF
ContainerDayVietnam2016: Dockerize a small business
PDF
Docker: A New Way to Turbocharging Your Apps Development
PDF
Docker workshop 0507 Taichung
PDF
手把手帶你學 Docker 入門篇
PDF
廣宣學堂: 容器進階實務 - Docker進深研究班
PDF
Docker 進階實務班
PPTX
Docker 1.11 Presentation
PDF
手把手帶你學Docker 03042017
PDF
Docker+java
PDF
Docker Essentials Workshop— Innovation Labs July 2020
PDF
Docker, but what it is?
PDF
Up and running with docker
PDF
PPT
14309525_docker_docker_docker_docker_introduction.ppt
PDF
Dockers & kubernetes detailed - Beginners to Geek
PPTX
Running Docker in Development & Production (DevSum 2015)
PDF
VMware@Night: Container & Virtualisierung
Docker, Kubernetes, and Google Cloud
時代在變 Docker 要會:台北 Docker 一日入門篇
Docker Introduction and its Usage in Machine Learning
ContainerDayVietnam2016: Dockerize a small business
Docker: A New Way to Turbocharging Your Apps Development
Docker workshop 0507 Taichung
手把手帶你學 Docker 入門篇
廣宣學堂: 容器進階實務 - Docker進深研究班
Docker 進階實務班
Docker 1.11 Presentation
手把手帶你學Docker 03042017
Docker+java
Docker Essentials Workshop— Innovation Labs July 2020
Docker, but what it is?
Up and running with docker
14309525_docker_docker_docker_docker_introduction.ppt
Dockers & kubernetes detailed - Beginners to Geek
Running Docker in Development & Production (DevSum 2015)
VMware@Night: Container & Virtualisierung

More from Erica Windisch (12)

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
PDF
Practical Docker for OpenStack - NYC / PHL OpenStack meetup (4-23-2014)
PDF
Docker OpenStack - 3/27/2014
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
Practical Docker for OpenStack - NYC / PHL OpenStack meetup (4-23-2014)
Docker OpenStack - 3/27/2014

Recently uploaded (20)

PDF
How Onsite IT Support Drives Business Efficiency, Security, and Growth.pdf
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
madgavkar20181017ppt McKinsey Presentation.pdf
PDF
AI And Its Effect On The Evolving IT Sector In Australia - Elevate
PDF
Sensors and Actuators in IoT Systems using pdf
PDF
GamePlan Trading System Review: Professional Trader's Honest Take
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
KodekX | Application Modernization Development
PPTX
Cloud computing and distributed systems.
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Advanced Soft Computing BINUS July 2025.pdf
PDF
Modernizing your data center with Dell and AMD
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Chapter 2 Digital Image Fundamentals.pdf
How Onsite IT Support Drives Business Efficiency, Security, and Growth.pdf
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Dropbox Q2 2025 Financial Results & Investor Presentation
madgavkar20181017ppt McKinsey Presentation.pdf
AI And Its Effect On The Evolving IT Sector In Australia - Elevate
Sensors and Actuators in IoT Systems using pdf
GamePlan Trading System Review: Professional Trader's Honest Take
Per capita expenditure prediction using model stacking based on satellite ima...
Spectral efficient network and resource selection model in 5G networks
20250228 LYD VKU AI Blended-Learning.pptx
KodekX | Application Modernization Development
Cloud computing and distributed systems.
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
MYSQL Presentation for SQL database connectivity
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
Understanding_Digital_Forensics_Presentation.pptx
Advanced Soft Computing BINUS July 2025.pdf
Modernizing your data center with Dell and AMD
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Chapter 2 Digital Image Fundamentals.pdf

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