Live data from Hacker News

Docker 0.8: Quality, new builder features, btrfs, OSX support

blog.docker.io

61–70 of 128 posts

Re: Docker 0.8: Quality, new builder features, btrfs, OSX support

#61
post #57

Earlier quoted context omitted.

I'd be biased to agree since that's Manuel's blog, someone I used to work with. I've supported 24x7 and 9x5 ops where downtime was unacceptable. zfs makes it a whole lot easier to perform upgrades, know data and metadata are solid and send snapshots around.

> ZFS uses atomic writes and barriers This about settles the question for me. Assuming that the implication that btrfs performs otherwise holds true.

Barriers are also used in btrfs.

and from what i can tell clone operations are also handled atomically

though i kinda wonder what exactly is meant by atomic writes.

Re: Docker 0.8: Quality, new builder features, btrfs, OSX support

#62
post #3

Just to clarify on the OSX support: obviously we did not magically get Darwin to support linux containers. But we put together the easiest possible way to run Linux containers on a Mac without depending on another machine. We do this by combining (1) docker in "client mode", which connects to (2) a super-lightweight linux VM using boot2docker. The details are on http://docs.docker.io/en/latest/installation/mac/

I've followed and refollowed those steps on OS X 10.9.1, but this is what happens:

  » docker version
  Client version: 0.8.0
  Go version (client): go1.2
  Git commit (client): cc3a8c8
  2014/02/05 23:10:55 unexpected EOF
Yet the docker server is definitely up:

  docker@boot2docker:~$ docker version
  Client version: 0.8.0
  Go version (client): go1.2
  Git commit (client): cc3a8c8
  Server version: 0.8.0
  Git commit (server): cc3a8c8
  Go version (server): go1.2
  Last stable version: 0.8.0
Tried both `export DOCKER_HOST=tcp://` and `export DOCKER_HOST=localhost` (as per boot2docker README), before re-init.

Re: Docker 0.8: Quality, new builder features, btrfs, OSX support

#63

It's confusing why btrfs support was prioritized ahead of zfs considering zfs' superior architecture and ops capabilities. Is docker (formerly dotcloud) going to start withholding capabilities as licensed features? Edit: prelim zfs driver work is here https://github.com/gurjeet/docker/tree/zfs_driver

We've tried to be plainly open that going the 'open core' route is in no ones best interest. Swappable storage engines will be easier to create over time, not less. There's also a ZFS branch, but the reality is people spent time and resources on getting BTRFS (which has been experimental for >6mos) instead of ZFS. Docker development works a lot like Linux development (just on a much, much smaller scale.) If there's a…

Gurjeet is on it.

Edit - docker's great. if I were an investor, how would you guys monetize it? prof svcs, support? I could see folks paying for a dashboard, cloud controller w/ api and an easy-to-deploy openstack-like setup.

Re: Docker 0.8: Quality, new builder features, btrfs, OSX support

#64
post #52

Earlier quoted context omitted.

What superior architecture does zfs have?

My understanding is that btrfs is still in catchup mode for the foreseeable future, but might eventually cover the distance. Has btrfs jumped ahead of zfs in ways I haven't heard about? Edit - this is my first search result: http://rudd-o.com/linux-and-free-software/ways-in-which-zfs-...

the first parts are right (though i don't know how accurate) and could certainly be improved with tooling.

testing will come with time.

with raidz sure it's great but the vdevs being immutable is really rather annoying. the way btrfs handles multi device stuff is significantly better (replication is not between 2 devices but closer to the file (it allocates a chunk of space and decides where to put the other replica in the pool).

though i wish the erasure coding stuff would land faster.

btrfs has had send\receive for a while.

I haven't needed to dig into the btrfs man pages yet so can't common on how accurate this is.

btrfs also uses barriers log devices and cache devices are awesome. i hope btrfs adds them.

the block device thing is a limitation of btrfs and annoys me though i've slowly moved to just having files. (though in anything largish i would probably be moving to a distributed fs anyway)

the sharing stuff is good but i think that's a tooling issue not an fs issue.

btrfs has an out of band dedup allowing you to run periodic dedup without having the memory penalty of live dedup (though costing disk)

Re: Docker 0.8: Quality, new builder features, btrfs, OSX support

#65

It's confusing why btrfs support was prioritized ahead of zfs considering zfs' superior architecture and ops capabilities. Is docker (formerly dotcloud) going to start withholding capabilities as licensed features? Edit: prelim zfs driver work is here https://github.com/gurjeet/docker/tree/zfs_driver

Probably just due to the licensing issues surrounding zfs and linux.

Check out zfs on linux, kmod binary distribution is likely okay and dkms method shifts compiling to the end-user, which avoids it entirely.

Re: Docker 0.8: Quality, new builder features, btrfs, OSX support

#66

Earlier quoted context omitted.

Online scrubbing, so no downtime waiting for fsck for one. If you'd used it, you'd know how many hard won production battles solaris devs poured into making zfs better from the ground up. btrfs is oracle's NIH syndrome, reinventing the wheel instead of developing one that already had, pun intended, traction.

btrfs has online scrubbing. btrfs is the response to sun picking an incompatible license. when that is removed zfs might get more interesting for a lot of people.

Oracle acquired Sun, so they could have solved it by just choose another license moving forward. One gotcha is the ZFS (Solaris core) team vehemently resisted anything GPL-compatible. Something like a BSD license would make the most commercial sense. Instead, Oracle has a consistent pattern of losing community goodwill that loses customer interest and pushes developers to fork.

Re: Docker 0.8: Quality, new builder features, btrfs, OSX support

#67
post #57

Earlier quoted context omitted.

> ZFS uses atomic writes and barriers This about settles the question for me. Assuming that the implication that btrfs performs otherwise holds true.

Barriers are also used in btrfs. and from what i can tell clone operations are also handled atomically though i kinda wonder what exactly is meant by atomic writes.

Thanks for clearing that up.

I might have to dig into it a bit more.

Re: Docker 0.8: Quality, new builder features, btrfs, OSX support

#68
post #52

Earlier quoted context omitted.

My understanding is that btrfs is still in catchup mode for the foreseeable future, but might eventually cover the distance. Has btrfs jumped ahead of zfs in ways I haven't heard about? Edit - this is my first search result: http://rudd-o.com/linux-and-free-software/ways-in-which-zfs-...

the first parts are right (though i don't know how accurate) and could certainly be improved with tooling. testing will come with time. with raidz sure it's great but the vdevs being immutable is really rather annoying. the way btrfs handles multi device stuff is significantly better (replication is not between 2 devices but closer to the file (it allocates a chunk of space and decides where to put the other replica…

does btrfs have anything comparable to raidz3?

Re: Docker 0.8: Quality, new builder features, btrfs, OSX support

#69
post #33

Is Docker a good way to bring more security on a server with a few different websites? Separating the sites from each other and run nginx as a proxy in front of them? What's the overhead?

It depends. If the goal is to consolidate several boxes to a single VM, it does this. Be sure host-based (on the linux box) firewall rules are set and documented. If possible, set network-based firewall rules also (AWS security groups).

Re: Docker 0.8: Quality, new builder features, btrfs, OSX support

#70
post #33

Is Docker a good way to bring more security on a server with a few different websites? Separating the sites from each other and run nginx as a proxy in front of them? What's the overhead?

Unfortunately Docker prevents hosting environments from employing some of the most potent security mitigations added to Linux recently.

You cannot treat a docker container like a virtual machine – code running in the container has almost unfettered access to the parent kernel, and the millions of lines of often-buggy C that involves. For example with the right kernel configuration, this approach leaves the parent machine vulnerable to the recent x86_32 vulnerability (http://seclists.org/oss-sec/2014/q1/187) and many similar bugs in its class.

The algorithms in the running kernel are far more exposed too - instead of managing a single process+virtual network+memory area, all the child's resources are represented concretely in the host kernel, including its filesystem. For example, this vastly increases the likelihood that a child could trigger an unpatched DoS in the host, e.g. the directory hashing attacks that have effected nearly every filesystem implementation at some point (including btrfs as recently as 2012).

The containers code in Linux is also so new that trivial security bugs are being found in it all the time – particularly in sysfs and procfs. I don't have a link right now, though LWN wrote about one a few weeks back.

While virtual machines are no security panacea, they diverge in what classes of bugs they can be affected by. Recent Qemu/libvirt supports running under seccomp.. ensuring even if the VM emulator is compromised, the host kernel's exposure remains drastically limited. Unlike qemu, you simply can't apply seccomp to a container without massively reducing its usefulness, or using a seccomp policy so liberal that it becomes impotent.

You could use seccomp with Docker by nesting it within a VM, but at that point Docker loses most of its value (and could be trivially replaced by a shell script with a cute UI).

Finally when a bug is discovered and needs to be patched, or a machine needs to be taken out of service, there is presently no easy way to live-migrate a container to another machine. The most recent attempt (out of I think 3 or 4 now) to add this ability to Linux appears to have stalled completely.

As a neat system for managing dev environments locally, it sounds great. As a boundary between mutually untrusted pieces of code, there are far better solutions, especially when the material difference in approaches amounts to a few seconds of your life at best, and somewhere south of 100mb in RAM.

Post reply on HN