HyperContainer - Hypervisor-agnostic Docker Runtime
This repo contains two parts: the daemon of HyperContainer hyperd
and the CLIhyperctl
.
What is HyperContainer?
HyperContainer is a hypervisor-agnostic technology that allows you to run Docker images on plain hypervisor.
Why HyperContainer?
HyperContainer combines the best from both worlds: VM and Container.
- |
Container |
VM |
HyperContainer |
Isolation |
Weak, shared kernel |
Strong, HW-enforced |
Strong, HW-enforced |
Portable |
Yes, but kernel dependent sometimes |
No, hypervisor dependent |
Yes, hypervisor agnostic and portable image |
Boot |
Fast, sub-second |
Slow, tens of seconds |
Fast, sub-second |
Performance |
Great |
OK |
Good, minimal resource footprint and overhead |
Immutable |
Yes |
No, configuration management required |
Yes, only kernel+image |
Image Size |
Small, MBs |
Big, GBs |
Small, MBs |
Compatibility |
No, need new tools |
Great, everything just works |
Good, it is still a "Machine", much less changes |
Mature |
Not yet |
Production ready, SDN, SDS, LiveMigration, etc. |
Yes, just plug-&-play |
ROI |
Rebuild everything with container |
- |
Reuse your virtual infrastructure |
*BYOK = bring your own kernel
Requirements
- QEMU 2.0 or later (QEMU 2.6 or later for ARM64 Architecture)
- Xen 4.5 and VT enabled host (for Xen support)
Installation
Ensure you are running Linux (kernel 3.8 or later) and have QEMU (version 2.0 or later) installed.
Then download the binaries and install them (hyper-container and hyperstart) directly.
For the detail of installation, please refer to the documents.
For information on using the command line, just type hyperctl
. You may use
hyperctl <command> --help
for detailed information on any specific command.
Build From Source
Clone hyperd in GoPath
> mkdir -p ${GOPATH}/src/github.com/hyperhq
> cd ${GOPATH}/src/github.com/hyperhq
> git clone https://github.com/hyperhq/hyperd.git hyperd
And make sure you have go
(>= 1.7) , device-mapper-devel
, and autotools
, go into the hyperd
dir
> ./autogen.sh
> ./configure
> make
Then you can find the binaries hyperd
daemon and hyperctl
cmdline tool in current directory. Before running those commands, a config file needs to be placed at /etc/hyper/config
directory, and you can find a sample under ${TOP}/package/dist/etc/hyper/config
. Kernel
and Initrd
are required for starting the hyperd daemon, you can find those files from HyperStart project.
Find out more
Found a bug, want to suggest a feature, or have a question?
File an issue. When reporting a bug, please include which version of hyperd you are running, as shown by hyperctl --version
.