There was some earlier discussion about this on slack a while ago, which may or may not be relevant anymore.
It seems easy to say a component must be a container, but what about “the thing that runs containers” (for the purposes of this discussion I will assume that is
containerd can’t itself be run in a container because it is the thing that runs containers.
containerd is not a moby component or we need to expand our definition.
The process isolation of a component is just one of many properties. I think questions 3 (discovery), and 4 (communication) are also part of this definition. We also need to answer:
- how are components distributed/installed?
- how are component lifecycles managed ? (ex: started, stopped, reloaded on failure, etc)
- how are components configured and reconfigured?
As mentioned, while containerd seems obvious, it doesn’t match our earlier definition of a component.
Each of these is going to be a massive effort, so let’s not worry about trying to identify a bunch of them. Let’s try to identify 3 or so options, and pick just a single one of those options as the “first component”.
As mentioned, these seem like good options: build, swarmkit, volumes, and plugins.
Both responses so far (and also afaik Solomon’s recommendation) is to use unix domain sockets. The question is how does each component receive the path to a socket?
Does each “component interface” (ex: “the plugin interface”) have a predefined name, and the path is hardcoded based on the name?
Does a plugin have to request the paths for each component it depends on at startup?
Does moby-core (aka “the framework”) pass a full list of paths for all components to each component?
Isn’t “build-time swap out” effectively equivalent to “hardcoded” ? If not, how are they different?
There’s already enough work to do, we should start with the easiest option, which I think is build-time. Run-time swap out introduces the problem of how to distribute and install components that aren’t built in. Let’s not take on that extra work when there is already plenty of other higher priority things to work on.