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…
Docker 0.8: Quality, new builder features, btrfs, OSX support
71–80 of 128 posts
Re: Docker 0.8: Quality, new builder features, btrfs, OSX support
#72Is 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 mac…
If a web application has a vulnerability that allows arbitrary code execution then Docker is only a mild help.
BUT, it can help migrate a certain set of security problems. It is a very simple way to provide pretty good protection against file-traversal type vulnerabilities, even when combined with privilege escalation.
People shouldn't view Docker as a security "silver bullet". But at the same time it does provide an additional layer of security, and that layer can be useful.
The Docker people have a good post[1] about the Docker security model, and they list two future improvements they see as important:
"map the root user of a container to a non-root user of the Docker host, to mitigate the effects of a container-to-host privilege escalation;"
and
"allow the Docker daemon to run without root privileges, and delegate operations requiring those privileges to well-audited sub-processes, each with its own (very limited) scope: virtual network setup, filesystem management, etc."
I think most people would agree these are important goal.
[1] http://blog.docker.io/2013/08/containers-docker-how-secure-a...
Re: Docker 0.8: Quality, new builder features, btrfs, OSX support
#73can someone explain what this is ? and what's the purpose ?
Try here: http://www.docker.io/learn_more/
> Docker is an open-source engine that automates the deployment of any application as a lightweight, portable, self-sufficient container that will run virtually anywhere.
Like an internet browser for executables ? I don't understand how can this be useful...
Re: Docker 0.8: Quality, new builder features, btrfs, OSX support
#74Earlier quoted context omitted.
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
#75Earlier quoted context omitted.
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
#76Just 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 G…
See also https://github.com/steeve/boot2docker/issues/48 which has some more information about this specific issue.
Re: Docker 0.8: Quality, new builder features, btrfs, OSX support
#77Just 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 G…
Re: Docker 0.8: Quality, new builder features, btrfs, OSX support
#78Earlier quoted context omitted.
Try here: http://www.docker.io/learn_more/
nope, I still don't get it. > Docker is an open-source engine that automates the deployment of any application as a lightweight, portable, self-sufficient container that will run virtually anywhere. Like an internet browser for executables ? I don't understand how can this be useful...
See http://en.wikipedia.org/wiki/LXC
See http://docs.docker.io/en/latest/faq/#how-do-containers-compa...
Docker is a mechanism to bundle an application together inside a container (think VM instance) in a way that makes it easier to distribute.
Re: Docker 0.8: Quality, new builder features, btrfs, OSX support
#79Re: Docker 0.8: Quality, new builder features, btrfs, OSX support
#80Is 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 mac…
You list various facts that are mostly correct, but your conclusion is wrong. Docker absolutely does not reduce the range of security mitigations available to you.
Your mistake is to present docker as an alternative to those security mitigations. It's not an alternative - it presents you with a sane default which can get you pretty far (definitely further than you are implying). When the default does not fit your needs, you can fit Docker in a security apparatus that does.
The current default used by docker is basically pivot_root + namespaces + cgroups + capdrop, via the lxc scripts and a sane locked down configuration. Combined with a few extra measures like, say, apparmor confinement, dropping privileges inside the container with `docker run -u`, and healthy monitoring, you get an environment that is production-worthy for a large class of payloads out there. It's basically how Dotcloud, Heroku and almost every public "paas" service out there works. It's definitely not a good environment for all payloads - but like I said, it is definitely more robust than you imply.
So your first mistake is to dismiss the fact that linux containers are in fact an acceptable sandboxing mechanism for many payloads out there.
Your second mistake is to assume that if your payloads need something other than linux containers, you can't use Docker. Specifically:
> 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 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.
Of course you're right, sometimes a container is not enough for sandboxing and you need a VM. Sometimes even a VM is not enough and you need physical machines. That's fine. Just install docker on all of the above, and map containers to the underlying machines in a way that is consistent with your security policy. Problem solved.
> 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).
That's your judgement to make, but I'm going to go a whim and say that you haven't actually used Docker that much :) Docker is commonly used in combination of VMs for security, so at least some people find it useful.
> 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.
In my opinion live migration is a nice to have. Sure, for some payloads it is critically needed, and no doubt the day linux containers support full migration those payloads will become more portable. But in practice a very large number of payloads don't need it, because they have built-in redundancy and failover at the service level. So an individual node can be brought down for maintenance without affecting the service as a whole. Live migration also has other issues, for example it doesn't work well beyond the boundaries of your shared storage infrastructure. Good luck implementing live migration across multiple geographical regions! This has been established as ops best practices , so over time the number of payloads which depend on live migration will diminish.
> 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.
To summarize: docker is primarily a system for managing and distributing repeatable execution environments, from development to production (and not just for development as you imply). It does not implement any security features by itself, but allows you to use your preferred isolation method (namespaes, hypervisor or good old physical separation) without losing the benefits of repeatable execution environments and a unified management API.