RailCar: Rust implementation of oci-runtime
github.com
github.com
Containers should just be the new static binary. Instead, we have Docker "Daemon"'s that can crash.
However, I've also been thinking about ways to defend against hostile containers. And it turns out that a lot of the tricks you need to do are very hard if you don't use a daemon and are impossible if you don't want to pollute the host namespaces.
I've spoken to Vish (the author) and we'll see if we can include some of my architecture reworks into railcar or if I'll go off and do my own thing.
Oh, and by the way, if you like runc's design you should probably go look at rkt. I'm planning on putting in the work to make rkt work without systemd, but the really nice thing about rkt is that it's architecture is also completely daemonless.
lxc and lxd have quite a large amount of very interesting technology and features. lxd has live migration and a whole host of other cool features, and lxc is quite well designed from my experience. Also the developers are quite clever folks IMO. I've been bouncing some of my ideas for a new container runtime off them, since they also have seen the issues I've seen with the current state of things.
The big difference is that lxc/lxd is designed to "boot" an operating system as a container, not just to run a single application. While there is actually no significant technical difference between the two usecases, the features that have grown out of each runtime are tailored for those usecases. lxc lets you log into a console (in the same way you would on a physical box) and do a full getty login. runc has tools for managing containers in a far more "micro-service" sense.
I really wish that the lxc folks had helped us with the OCI, but I have a feeling their usecases are so different to us that it's unlikely we could reach agreement in the spec. Overall though, lxc definitely has a place and it's a shame more people don't try it out.
https://www.kernel.org/doc/Documentation/admin-guide/binfmt-...
I guess this project is perfect for them but it's probably a bit impoverished for other people.
That said, the complaints they have about Docker are extremely valid. I've been grumbling about them for years. Though some of their solutions seem clunky. The /read, /write and /run directories seem...weird, at best.
(I think. I wish the README would have made that more clear.)
I can't help but notice the UPL license is an odd choice. The whole thing about contributors granting patent licenses.. isn't that a legal minefield?
Patents are a legal minefield (for users) whether or not your licenses talk about them (though licenses that remain silent about patents open you up to patent treachery) because of the laws that surround them (independent discovery is not protected). As for patent holders, they simply are not allowed to both distribute software under those licenses and harass users of said software using patents contained in the software. I think that's more than a fair trade (in fact, the scales are tipped in their favour because they can still sue you if someone else independently discovers something they patented).
[1]: https://www.gnu.org/licenses/license-recommendations.html#sm... -- In particular `[...] it does prevent patent holders from setting up a “bait and switch” where they release the software under free terms then require recipients to agree to nonfree terms in a patent license.`