Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: minor English

Bug Reference

JIRA-6664: https://issues.apache.org/jira/browse/CLOUDSTACK-6664 

Branch

4.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 steps you would otherwise take perform manually to create an image.
  • Docker registry: repository server for Docker images.

Feature Specifications

  • 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

User A 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-agent make some changes to start starts Docker service in the background in the Docker host and send 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