Bug Reference
JIRA-6664: https://issues.apache.org/jira/browse/CLOUDSTACK-6664
Branch
What branch is this work being done in4.5 hopefully.
Introduction
Purpose
This is functional specification of feature "Support Docker as a hypervisor" which has Jira ID CS-6664. Docker hypervisor can spawn containers from Dockerfile, Docker image or Docker tar file.
References
Document History
Glossary
- Dockerfile: This textfile is read by Docker service read to automate the automate the steps you would otherwise take perform manually to create an image.
- Docker registry: repository server for Docker images.
Feature Specifications
- put a summary or a brief description of the feature in question
- list what is deliberately not supported or what the feature will not offer - to clear any prospective ambiguities
- list all open items or unresolved issues the developer is unable to decide about without further discussion
- quality risks (test guidelines)
- functional
- non functional: performance, scalability, stability, overload scenarios, etc
- corner cases and boundary conditions
- negative usage scenarios
- specify supportability characteristics:
- what new logging (or at least the important one) is introduced
- how to debug and troubleshoot
- what are the audit events
- list JMX interfaces
- graceful failure and recovery scenarios
- possible fallback or work around route if feature does not work as expected, if those workarounds do exist ofcourse.
- if feature depends other run-time environment related requirements, provide sanity check list for support people to run
- explain configuration characteristics:
- configuration parameters or files introduced/changed
- branding parameters or files introduced/changed
- highlight parameters for performance tweaking
- highlight how installation/upgrade scenarios change
- deployment requirements (fresh install vs. upgrade) if any
- system requirements: memory, CPU, desk space, etc
- interoperability and compatibility requirements:
- OS
- xenserver, hypervisors
- storage, networks, other
- list localization and internationalization specifications
- explain the impact and possible upgrade/migration solution introduced by the feature
- explain performance & scalability implications when feature is used from small scale to large scale
- explain security specifications
- list your evaluation of possible security attacks against the feature and the answers in your design* *
- explain marketing specifications
- explain levels or types of users communities of this feature (e.g. admin, user, etc)
Use cases
- running Docker containers as VMs in CloudStack
- remove SSVM + CPVM and also Secondary Storage & Primary Storage. Data will be store locally on Docker host.
- running Virtual Router as a Docker container
Use cases
A user User want to use containers in CloudStack, he can use LXC or Docker hypervisor can be used. For Docker, he this can do be done in several ways:
- run from a Docker image
- build from a Docker file
- run from a Docker tarfile
Architecture and Design description

cloud-plugin-hypervisor-docker
- DockerResource acts like a Docker driver, which serves provision provides provisioning commands (startContainer, stopContainer, restartContainer,...) from Agent Manager and make . It makes corresponding http requests to the Docker service running on HOST.
- DockerGuru fills container parameters for provisioning.
- DockerServerDiscoverer aims to discover and register discovers and registers Docker HOST to with the Agent Manager.
cloud-setup-agentagent starts Docker service in the background in the Docker host and sends register host request to the Agent Manager.
docker HTTP client implements http requests to the Docker service, using REST API v1.10
Web Services APIs
registerTemplate
- hypervisor: Docker
- format: choose from combo box
- from a Repository image
- from a Dockerfile
- from a Tarfile
- url:
- image name if Repository is chosen
- url if Dockerfile is chosen
- url if Tarfile is chosen
UI flow
- either demonstrate it visually here or link to relevant mockups
IP Clearance
- what dependencies will you be adding to the project?
- are you expecting to include any code developed outside the Apache CloudStack project?
Appendix
Appendix A:
Appendix B: