Go Shell Other
Clone or download
Latest commit 872d4fe Jul 23, 2018
Failed to load latest commit information.
client improve the command line usage printing for ports command Sep 26, 2017
cmd Add make option GODEBUG to generate GDB friendly binary Jan 18, 2018
daemon HyperConfig: add GDBTCPPort Jul 20, 2018
docs/static_files [update-demo-png] update demo script Sep 23, 2015
engine use docker v1.10 to manage docker images and container Feb 16, 2016
errors add REST server for portmapping Sep 6, 2017
examples re-enable the in sandbox portmapping with exec in sandbox Sep 27, 2017
hack stick the irssi image tag in specuseroverride case Jul 5, 2018
image support loading oci image Mar 3, 2017
integration hack/test-cmd.sh: change test image from "busybox" to "hyperhq/busybox" Feb 8, 2018
lib use docker v1.10 to manage docker images and container Feb 16, 2016
libmoby/distribution work around: pull: get digest for tagged pull if it has one May 3, 2017
mac_installer deprecate the flag --nondaemon Aug 11, 2016
networking/portmapping adapt runv network interface change Oct 13, 2017
package document StorageBaseSize option for rawblock and devicemapper Nov 15, 2017
server rules fix for pod level portmapping Sep 26, 2017
serverrpc ServerRPC.PodInfo: ServerRPC.ContainerInfo: show clear info in log Jul 10, 2018
storage rawblock: support configurable rootfs/volume size Nov 15, 2017
types HyperConfig: add GDBTCPPort Jul 20, 2018
utils error log fix Jan 6, 2017
vendor Update runv to merge "BootConfig: add GDBTCPPort" Jul 19, 2018
.gitignore cleanup: move src for bin files to cmd/ subdir Oct 16, 2017
.travis.yml fix portmapping failure introduced by hyperhq/runv#592 Dec 13, 2017
LICENSE update the license Apr 14, 2016
Makefile.am Add make option GODEBUG to generate GDB friendly binary Jan 18, 2018
NOTICE add NOTICE file Aug 11, 2015
README.md update README Apr 4, 2017
autogen.sh cleanup: move src for bin files to cmd/ subdir Oct 16, 2017
configure.ac fix xen build Dec 13, 2017


Build Status

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


  • QEMU 2.0 or later (QEMU 2.6 or later for ARM64 Architecture)
  • Xen 4.5 and VT enabled host (for Xen support)


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

Contact Us

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.