Hi,
I will take a shot at helping you out here.
The whole Repo/CV/etc topic is probably the most complicated part about getting started with Katello. If you want to understand the concepts behind all of that, I did a somewhat extensive writeup about this a while ago in this thread. The post is a little dated, but the core principles stayed the same.
For your last example, I would suggest a setup like this:
Use 4 CVs:
- CentOS
- Docker
- EPEL
- Home-grown
Then, build a composite content view with those 4. Alongside, I would use one activation key per content view (or, in the case of docker where there might be different versions used on different systems in parallel, one per repo of that content view).
Since a System with an OS does not work, I would use the CentOS7 key to assign the CCV and lifecycle environment. Please not that using more than one key with these options on the same host (system you want to install) will result in unexpected behavior, so don’t overdo this. If you want the systems to be in different lifecycle environments, I would suggest duplication the CentOS7 key per environment.
The other keys should just set the repositories you want to enabled.
This way, you will have a little more overhead when updating your repos (because you always need to update the composite content view, too) but you also get a lot more flexibility and reusability.
Regards