To clarify, the flyweight task is the task coordinates the sub-tasks and assembles the final results. Each of the sub-tasks already run properly in docker containers. But the coordinating flyweight task does not run in a docker container (the ability is explicitly disabled with a conditional last I checked the docker plugin source).
Therefore, if the coordinating flyweight task doesn't have a place (e.g. another container or permanent host) to run it then none of the sub-tasks are created.
node() {} blocks aren't very good at matrix building without a lot of complicated scripting. (i.e. saving the script as a variable and reusing it half a dozen times in node blocks). pipeline also doesn't cleanly assemble the results like the matrix building project type can. pipeline plugin is not a good solution for this IMO or current functionality is lacking.
Sounds to me like you want to be looking at pipelines and sections within node() {} blocks.
docker plugin merely implements the cloud API, so there is no forseeable chance if implementing what you're asking for without a significant core change.