
Hyper – Hypervisor-agnostic Docker engine - tbronchain
https://hyper.sh/
======
mbreese
I like this idea. It's a stripped down VM capable of only running containers.
There are a couple of downsides, compared to straight docker though - you have
to go through the VM layer for disk io. So, if you have a shared volume, there
will be a performance hit.

However, you get a big boost for security.

This type of tech could make it possible to use (Docker) containers in a true
multi-tenant system.

One question though - is it possible to specify the vmem and vcpus for the
qemu VM? (Either from the command line or pod file?)

~~~
feld
Containers have been used in multi-tenant systems for years in both Solaris
and FreeBSD via zones and jails

~~~
gnepzhao
Not sure how secure they are. But sounds a bit scary to run my app in a
shared-kernel environment.

~~~
feld
Docker also uses a shared kernel...

edit: and why is it different than a shared hypervisor? Hypervisors have
exploits, too...

~~~
gnepzhao
Yes, but the nature of lxc makes it much easier to exploits.

------
neilellis
Would be nice to have this on Macs too no more crappy VirtualBox ;-)

~~~
divideby0
You can do Docker with VMWare using Docker Machine:

docker-machine create -d vmwarefusion --vmwarefusion-boot2docker-url
[https://github.com/cloudnativeapps/boot2docker/releases/down...](https://github.com/cloudnativeapps/boot2docker/releases/download/v1.6.0-vmw/boot2docker-1.6.0-vmw.iso)
my-docker-machine --vmwarefusion-memory 4096 --vmwarefusion-disk-size 30000

------
zobzu
it seems very similar to clearcontainer that was announced a few days ago,
i.e. interesting since both are much nicer than "traditional container"
solutions.

Now for the interesting stuff.. init process (C):
[https://github.com/hyperhq/hyperstart](https://github.com/hyperhq/hyperstart)

Daemon (Go):
[https://github.com/hyperhq/hyper/tree/master/hyperdaemon](https://github.com/hyperhq/hyper/tree/master/hyperdaemon)

Stuff to replace with overlayfs ;)
[https://github.com/hyperhq/hyper/tree/master/storage/aufs](https://github.com/hyperhq/hyper/tree/master/storage/aufs)

~~~
gnawux
yes, we do not support overlayfs yet, but will. overlayfs is the future of
unionfs, and aufs is the current. :)

------
kj92
Looks interesting. How is this different from Clear Container several days
ago?

~~~
tbronchain
Hi there,

Thanks for your interest in Hyper!

We also noticed the release announcement of Clear Containers a few days ago.
There are 2 main differences, the first being on the technology used, CC using
RKT, while Hyper is based on Docker images. There is also a difference in term
of philosophy, where Hyper aims to be a technology-neutral open source
solution.

Hyper also have more features, such as running a Pod rather than one image on
a hypervisor as a schedule unit.

For more details, please check our FAQ
([https://hyper.sh/faq.html](https://hyper.sh/faq.html))

~~~
philips
I don't feel this is correct. rkt can run docker images[1] and once the clear
containers patches[2] land you will be able to run a docker image or an appc
image inside of a VM under rkt.

[1]
[https://github.com/coreos/rkt/blob/master/Documentation/comm...](https://github.com/coreos/rkt/blob/master/Documentation/commands.md#fetch-
from-a-docker-registry)

[2]
[https://github.com/coreos/rkt/pull/946](https://github.com/coreos/rkt/pull/946)

~~~
josephjacks
I think the question was specifically in the context of CC.

------
bandrami
Have we reached Peak Container yet?

~~~
tbronchain
Hi there, I am not sure what do you mean by "Peak Container"?

~~~
bandrami
Sorry, it's a pun on "Peak Oil" (the idea that at some point we're going to
pump and all the oil in the earth will be gone).

Not a dig at Hyper in particular (which looks cool), just that the "containers
as service configuration management" market is extremely saturated right now.

~~~
tbronchain
The idea behind hyper is to propose something slightly different, answering
the security issues you can have with containers.

------
MCRed
Are there good management and orchestration tools for Xen (or other
hypervisor)? One of the things about Docker is that I'm having trouble finding
good tools for managing an infrastructure of Docker containers. I know this is
being worked on, yes, but it's early days and I need something that is mature.

If anyone can suggest Xen admin stuff, I'd really appreciate it.

~~~
Tiksi
There's xenserver (tools) which was opensourced a little while ago.

Most configuration management systems also have modules for managing xen. At
the moment I'm writing some CFM code using saltstack with the xapi and virt
for my own stuff, as I'm not a huge fan of the xenserver and xen cloud
platform abstractions.

------
lsllc
Is this just a cross platform boot2docker?

~~~
tbronchain
Hi,

Hyper and Boot2docker are two really distinct products.

The difference is, one (boot2docker) let you run containers on not compatible
OSes, while the other one (Hyper) let you run each container, distinctly, in a
dedicated VM.

Hope that helps :)

~~~
m_mueller
Sorry, but I don't quite get it. What's the advantage over having a dedicated
VM per container?

~~~
tbronchain
Isolation, and security. As @mbreese perfectly said, "This type of tech could
make it possible to use (Docker) containers in a true multi-tenant system."
With Hyper, all your containers will run their own kernel, instead of sharing
the host's one.

~~~
techdragon
It sounds like the shit Microsoft was gibbering about a little while ago,
about how they would integrate their HyperV technology into their docker
runtime

~~~
scprodigy
Hmm, I happen to know some details of that. It is actually a quite powerful
technology with some out-of-box ideas.

------
throwaway5522
Hmm, something seems strangely familiar about this code.

[https://github.com/hyperhq/hyper/blob/master/storage/aufs/au...](https://github.com/hyperhq/hyper/blob/master/storage/aufs/aufs.go#L118)
[https://github.com/docker/docker/blob/master/daemon/graphdri...](https://github.com/docker/docker/blob/master/daemon/graphdriver/aufs/aufs.go#L420)

~~~
quesera
Luckily, the Apache Public License is compatible with itself.

------
boynux
That looks very interesting, I'm wondering how "container management" will be
handled and how scalable is it?

~~~
tbronchain
Hi there, Thanks for your interest :) Container management is handled the same
way it is in Docker (Hyper directly uses the Docker hub, and you can directly
`hyper pull` Docker images). About scalability, it is, again, very similar to
Docker's scalability. Hyper isn't compatible with some Docker components such
as Compose or Swarm yet, but it is on the roadmap. You can try Hyper following
the installation procedure:
[https://docs.hyper.sh/get_started/install.html](https://docs.hyper.sh/get_started/install.html)

------
jacques_chester
Is this just a stripped down type-2 hypervisor guest kernel, or is there
something else going on?

~~~
gnawux
Hi,

It does not run a full guest OS on the hypervisor, instead, initrd itself
launches a group of docker images, aka Pod on it.

~~~
jzila
So you're running all the containers on the initrd kernel?

~~~
otoburb
I had the same question, and had to dig a little into the Google Pod
documentation for this handy explanation: "In terms of Docker constructs, a
pod consists of a colocated group of Docker containers with shared
volumes."[1]

Based on the above tidbit, each Pod contains a few containers, thus a Pod (and
hence all of the containers in the Pod) will indeed be running on the initrd
kernel from the HyperVM instance.

The key point is that this applies for _each_ HyperVM (i.e. one HyperVM
launched per Pod). It seems the idea is that wherever you'd normally launch a
container, you can now instead launch a lighweight VM that behaves like a
container (i.e. fast to launch & small footprint) with default virtualization
benefits.

Basically, if you replace all instances of the term "HyperVM" with
"ContainerVM", it may help to parse their explanations more easily.

[1]
[https://github.com/GoogleCloudPlatform/kubernetes/blob/maste...](https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/pods.md)

------
mrmondo
The first you see when you load that page is a website telling you to curl to
bash.

The next thing you see is a gif that didn't seem to tell me what it actually
is.

I notice that it uses Kernel 4.0.1 - which is great that they're using
something modern, however 4.0.1 has a critical EXT4 bug that causes major data
corruption. This has been fixed in 4.1 RC5.

A lot of typos throughout the site too:

\- "Subscribe to the lastest Hyper news." \- " Pod is the first class in
Hyper"

I won't even mention the use of comic sans on their diagrams...

~~~
kordless
> I won't even mention the use of comic sans on their diagrams...

Actually, you just did.

------
nostalgiac
>curl -sSL [https://hyper.sh/install](https://hyper.sh/install) | bash

Seriously? Developers need to stop sprouting this crap as an install method.
Nobody in their sane mine should curl a script into bash to install a product.

~~~
Meai
There is no difference to running an executable. In fact, this is the BEST way
to offer installation to users. He is literally showing you the source code so
you can decide whether you actually want to run it or not. This stupid meme of
not wanting to run scripts is just that: a meme.

~~~
panhandlr
How many production servers have you been responsible for in your lifetime?

"There is no difference to running an executable. "

... There are these following differences.

1\. That url, assuming no malicious 3rd-party/nation-state is spoofing the
response, could return any different version of the installer resource at any
given time.

2\. That url might not always be available, for any number of reasons, and how
is someone who wants to "discover" this software when they are looking through
their available package list?

3\. Who knows what that url is "suppose to do" ... there is no signing
process, peer review process, nothing, you get whatever the apache server on
the other side of that HTTP request wants to give you, and your gonna send
that right into your root shell...

4\. Unlike a package, sitting in my personal safe, self host, audited, self-
verified debian package repository mirror ... this URL might not work
tomorrow, it might not work at 3:35am when my primary server took a shit and i
need to rebuild the whole stack... who knows what this URL will do in between
subsequent runs... it could return 2 different things when I am trying to
build a cluster of this product.

~~~
quesera
0\. Thousands. Tens of thousands, probably.

1\. True of any download link as well.

2\. See 1.

3\. See 1, unspoken comparison to trusted package archives excepted.

4\. Yes, getting your software into an official publishing channel is
preferable, but not automatic, not immediate, and not without update latency.

I'm 110% with you on hating pipe to shell, however. Your arguments don't
really address the issue.

And note also that you can just clone from github if you don't like piping to
shell. And nothing prevents you from packaging it yourself in your own trusted
repository. If you run serious infrastructure, you already do this.

------
markhahn
Wake me up when there's a Docker-independent hypervisor engine.

~~~
tbronchain
Hi there, not sure what you mean by Docker-independent hypervisor engine?
Hyper uses Docker images format in order to ship containers, but is totally
independent from Docker engine.

------
TheHippo
I like how the animation in the header of the website requires two of my CPU
cores at full speed.

Also offering piping to bash as first alternative for installing something.

~~~
quesera
I _agree_ with you on both counts, but still find your comment gratuitously
negative.

This looks like a very cool thing, and an important missing piece.

~~~
dimino
It's "gratuitously negative" to ask me to pipe a script I download from the
Internet into bash directly.

They _really_ should, for security reasons, spend the 5 seconds it'd take to
separate those into two commands, or come up with a better way to do things
(which would probably take more than 5 or 30 seconds).

Reminds me of pip (python packaging manager), who will, almost
narcissistically, remind you about how important it is to use secure
connections for python repos, and in fact will refuse to run without a bevy of
flags set explicitly allowing any kind of insecure or unverified package, but
first ask you to download and run a python script with an embedded binary,
because that's the only way they could think of to get bootstrapping working.

~~~
Gigablah
"Separate those into two commands"? That's it? Really?

This just screams "cargo cult".

~~~
icebraining
Not really. By separating the two commands and using && between the two, you
ensure the script will download successfully before executing, instead of
potentially leaving you with the software half-installed.

------
zobzu
"When VMs take tens of seconds to boot, Hyper is able to launch instances in
sub-second"

tens of a second would be +- same as sub second ;)

~~~
rimantas
Tenths, maybe; tens—not so much.

