Live data from Hacker News

How is Docker.io different from a normal virtual machine?

stackoverflow.com

31–40 of 111 posts

Re: How is Docker.io different from a normal virtual machine?

#31
post #29

I always wanted to ask a question about docker, if the local devel machine is ubuntu 12.04, I can not deploy my docker image build to a 10.04 ubuntu server, right? (Unless you run a 12.04 virtual machine or something.)

Yes you can. Docker doesn't care about the underlying distro, as long as it can run on it. You can build a container on a Red Hat host machine, and transfer it to an Ubuntu host machine - it will run just fine on both.

Re: How is Docker.io different from a normal virtual machine?

#32
post #4

I've been having trouble figuring out the value-add of using Docker over Ubuntu's built-in LXC functionality [1]. [1] https://help.ubuntu.com/12.04/serverguide/lxc.html

I also found myself asking this same question, and after careful consideration I ended up choosing LXC over Docker, and here are some reasons why: - LXC works fine on it's own. - Docker has it's own bugs, so you get all of the Docker bugs in addition to potential LXC bugs. - IPTables routing for containers to the outside world isn't that hard to manage. - LXC is simple and straightforward, and by comparison Docker is…

Looks like ShipBuilder has overlap with Docker, if not a direct competitor. A disclaimer wouldn't have hurt in my opinion.

Re: How is Docker.io different from a normal virtual machine?

#33
post #28

I really don't like giving up the isolation of modern hypervisors, particularly those with Intel virtualization extensions. Docker (and LXC) seems like a huge step backwards for security. I'm sure there are use cases, but I'd never multi-tenant with it.

I agree with you, but at the same time a I run a "private cloud" with 100+ containers at any one time. We do "sort-of" multi-tenant: There are multiple customers, but we run all of their services, so nobody outside of our organization needs os level access to the vm/containers.

For "real" multi-tenant systems, I'd want full VMs, but as noted elsewhere, you can run Docker containers inside a VM, and still benefit from sharing resources by carving up a large VM into many smaller, isolated subsets.

We run OpenVz today, but I'm following Docker closely as we plan to migrate to LXC, and then going for Docker might very well be the best alternative.

Re: How is Docker.io different from a normal virtual machine?

#34
post #23

Earlier quoted context omitted.

Indeed. One way you can use Docker in production[1] is one container per machine: even when you're not using the containers to split resources, the ability to snapshot and move an application and all of its dependencies in a single, lightweight, easily deployed package is very exciting. And because there's no translation etc. happening, running a single container is pretty much identical, performance-wise, to running…

You can actually do the same thing with LXC containers; it is trivial to rsync a snapshot or compressed archive of a snapshot to another host machine and run it there.

Why the downvote? Simple tools always work well. If you want process isolation on Linux, LXC + rsync might as well be the simplest route.

Re: How is Docker.io different from a normal virtual machine?

#35
post #23

Earlier quoted context omitted.

Indeed. One way you can use Docker in production[1] is one container per machine: even when you're not using the containers to split resources, the ability to snapshot and move an application and all of its dependencies in a single, lightweight, easily deployed package is very exciting. And because there's no translation etc. happening, running a single container is pretty much identical, performance-wise, to running…

You can actually do the same thing with LXC containers; it is trivial to rsync a snapshot or compressed archive of a snapshot to another host machine and run it there.

Anything not pro-docker usually gets downvoted by shykes and his ring of cronies.

Re: How is Docker.io different from a normal virtual machine?

#36
post #30
post #28

I really don't like giving up the isolation of modern hypervisors, particularly those with Intel virtualization extensions. Docker (and LXC) seems like a huge step backwards for security. I'm sure there are use cases, but I'd never multi-tenant with it.

> I really don't like giving up the isolation of modern hypervisors You don't have to! Think of docker as a unit of software delivery, rather than resource allocation. It's very common to use Docker to either a) deploy only trusted containers on the same machine, or b) deploy only 1 container per machine. There are also cases where linux cgroups and namespaces are an appropriate security mechanism (usually combined w…

How about OS patching? If I am running hundreds of different containers and I need to patch the OS (let's say upgrade the kernel or a driver), will I affect hundreds of applications at once? If so this will be a problem for several shops.

How about built-in failover? On a virtualized environment you can run a cluster and the VM will move to another host in case of failure. Does docker support that? Is that what the docker-cluster project (https://github.com/globocom/docker-cluster) is about?

Re: How is Docker.io different from a normal virtual machine?

#37
post #32

Earlier quoted context omitted.

I also found myself asking this same question, and after careful consideration I ended up choosing LXC over Docker, and here are some reasons why: - LXC works fine on it's own. - Docker has it's own bugs, so you get all of the Docker bugs in addition to potential LXC bugs. - IPTables routing for containers to the outside world isn't that hard to manage. - LXC is simple and straightforward, and by comparison Docker is…

Looks like ShipBuilder has overlap with Docker, if not a direct competitor. A disclaimer wouldn't have hurt in my opinion.

I don't follow. ShipBuilder uses LXC and is a complete open-source self-hosted PaaS; a Heroku-clone. How is it a Docker competitor?

I cite it merely as an example of the sorts of cool things which are possible with LXC.

Re: How is Docker.io different from a normal virtual machine?

#38
post #4

I've been having trouble figuring out the value-add of using Docker over Ubuntu's built-in LXC functionality [1]. [1] https://help.ubuntu.com/12.04/serverguide/lxc.html

I also found myself asking this same question, and after careful consideration I ended up choosing LXC over Docker, and here are some reasons why: - LXC works fine on it's own. - Docker has it's own bugs, so you get all of the Docker bugs in addition to potential LXC bugs. - IPTables routing for containers to the outside world isn't that hard to manage. - LXC is simple and straightforward, and by comparison Docker is…

Shipbuilder = webapp-focused PaaS built from haproxy + LXC

Docker = app-focused container API thang built from LXC with a historically strong aufs+ubuntu focus and limited support for more exotic setups

LXC = do anything the hell you want

Re: How is Docker.io different from a normal virtual machine?

#39
post #21
post #8

Holy cow, the unit test case is fantastic.

It is a good example, but I wonder how licensing would treat it. If I'm running hundreds of unit tests, each against a snapshot of my database, and my database is Oracle, they would likely view that as hundreds of instances which would each need a license.

There are Oracle licensing options to do this per CPU rather than per instance. That is what many people do who run Oracle farms on vSphere do to take advantage of the consolidation to reduce overall license costs.

Re: How is Docker.io different from a normal virtual machine?

#40
post #23

Earlier quoted context omitted.

Indeed. One way you can use Docker in production[1] is one container per machine: even when you're not using the containers to split resources, the ability to snapshot and move an application and all of its dependencies in a single, lightweight, easily deployed package is very exciting. And because there's no translation etc. happening, running a single container is pretty much identical, performance-wise, to running…

You can actually do the same thing with LXC containers; it is trivial to rsync a snapshot or compressed archive of a snapshot to another host machine and run it there.

Docker is based on LXC containers. It bundles it's own management layer that replaces the "rsync" solution you propose.
Post reply on HN