On 11/04/2015 03:41, Aristomenis Pikeas wrote:
I'm having a lot of trouble figuring out the differences between your projects. The s6 suite of utils can be considered building blocks for a full init system, but what does each of your projects do on top of s6?
s6-rc and anopa are very similar, except that anopa is released and s6-rc isn't - and won't be for a couple months. (If Olivier agrees, I'll discuss s6-rc design with him.) The point of both s6-rc and anopa is to implement a complete dependency-based init system that handle both one-time initialization scripts and long-running services, the latter being supervised by s6. They're mostly aimed at full-fledged machines ; you probably do not need them in a Docker container, unless you really have a lot of services. AIUI, Toki's supervision framework aims to ease integration of supervision systems with existing init schemes like SysVinit/OpenRC. You probably do not need that either in a Docker container. Gorka's s6-overlay integrates s6 into a Docker image for you, saving you the hassle of writing init scripts by hand for your container. This package will probably help you.
For a bit of context, my goal is the simplest init system that could possibly work, to be run inside of a docker container. I need to start services and gracefully handle SIGTERM/SIGKILL, with everything logged to standard out. That's about it.
s6-overlay is what you need. You probably don't need anything else.
But this is proving to be difficult with s6.
From what you are saying in the beginning of your mail, I understand that the difficulty comes from the abundance of peripheral projects with unclear use cases. Did I get your meaning correctly, or are you running into other difficulties ?
I've been chipping away at things, but it's slow going between understanding all of the tricky bash-isms and learning about all of the relevant s6 components.
Bashisms ? There are no bashisms in s6. Or in s6-overlay. There is no shell at all involved in either of these packages! I suspect you are getting confused by a few projects that are outside your scope. Maybe we need a meta-documentation page, that explains which project does what. This surprises me, however, because I think we're still a quite small community... When in doubt, go back to the basics. s6 itself is not more complicated than runit; there's just more in it, and all the extras are non-essential. http://skarnet.org/software/s6/overview.html should help you make sense of the s6 components. If something is unclear on that page, please tell me what you would like to see. And to use s6 in a Docker container, forget about complete init scripts and service management: you don't need all that. s6-overlay is the only community package you need; it should provide you with the minimal amount of necessary plumbing to run an s6-based container without headaches. Good luck, and please ask more questions if you're running into difficulties. -- Laurent
