Project Atomic: Deploy and Manage Your Docker Containers
projectatomic.io
projectatomic.io
Project page: https://wiki.gnome.org/Projects/OSTree
Relevant HN discussion: https://news.ycombinator.com/item?id=6277518
How many of these also hold for CoreOS? Probably less, but definitely some.
I for one don't really care much about root vs non-root in terms of host security. Even if you patch your kernel, without using grsec/SELinux/etc somebody'll just find another priv escalation hole next year and own your host with an unprivd user. If you actually focus on securing the host and applications, userland exploits have the same effect: little.
I don't think there's such a thing as a disposable service container. If it's a multi-user service it's got certain intrinsic properties you can't avoid. You have to be able to configure it, run it, use it, maintain it, troubleshoot/debug it, monitor it, etc. Who's "inflicting truth" doesn't matter as long as you can do all of the normal administration tasks required of multi-user network services. This, by the way, is where SSH becomes incredibly useful. Configuration management is not a panacea.
Things like Docker already do weird custom things to your service very similar to iptables-mangling rules, and nobody seems to have complained about it yet. It was only recently that they stopped mangling stock binaries like init in your image!
I think its one of the latter two because of your third paragraph there, where you slam the model under proposal (the disposable service container) as a nonexistant dream. Well, let me tell you, it exists and it works. I think most large companies use something similar (Google, etc.) because scaling any other way is too expensive.
Disposable service containers are 100% predictable copies of well tested system images that never, ever get logged in to or altered... only started, communicated with, or destroyed in very well defined ways. They are not allowed to accrue undocumented state, because there be dragons.
When you say "100% predictable", I think you might be discounting the fact that most services change as they run, and while they may have a finite set of operations, those operations' outcomes vary depending on input. Determinism does not work so well in network services. On top of that, most services are sufficiently complex that there does not exist enough tools to support them in a completely automated way.
Or, maybe I should modify my original statements to say that disposable services do exist, but are only useful short-lived with very specific use cases. I don't see the point in handicapping yourself for some theoretical ideal of predicable operations. Even with unpredictable services in an undocumented state, they can be managed to work quite well in the real world and happen to run gigantic pieces of infrastructure without issue.
I don't find containers to be the cheapest way to scale. The old model of just running a bunch of random apps on a single host is really cheap scaling. Containers just reduce the size and scope of the host and take process-level resource management to the host level, which has been done decades ago in the OS, but it didn't really catch on too well.
In order to dynamically adjust the load on your JBOA (Just a Bunch of Applications) platform to make it as efficient as possible, you adjust the distribution of requests to your services, versus containers where you adjust the distribution of your containers. Of course it depends on whether your app stack/services is designed properly, and since they seldom are it's not always very efficient in practice. What you consider cheap will probably change based on what kind of crap you have to manage.
In any case, how you use SSH is totally up to you, and it does not have to result in evilness or undocumented state. Just don't use it wrongly.
Both will let you run Docker containers.
CoreOS doesn't seem to support SELinux natively, but Atomic does. (Probably related to the fact that Atomic is a normal-ish linux distro and CoreOS is totally custom)
Atomic gives you a web interface to manage running services. I am not aware of a similar tool [Cockpit] on CoreOS.
Atomic uses geard as an interface to installing Docker containers into systemd and running them. It's a part of OpenShift. It seems to be abstraction that you can use to control more parts of the "orchestration" of large systems, plugging in zookeeper/etcd/serf for the backend configs. Seems like they have a strong focus on the real-world security of their application clusters. https://github.com/openshift/geard/blob/master/docs/orchestr...
Quite the opposite: bereft implementations and retread ideas are pasted over by fancy marketing.
The rise of buzzword marketing shine has been bad for our industry.