I'm still a bit of a Docker/container n00b, so please bear with me. I'd like to maintain 3 categories of environments for an application that consists of a:
The 3 categories needed are:
Do the orchestration solutions like Swarm and Kubernetes handle this scenario such that the containers within a category know about the others (e.g. Web3 knows about DB3 and Cache3 but none of the others), and would they be able to easily accommodate adding another trio of containers (Web+DB+Cache) to one of the existing categories (e.g. Internal)?
In Kubernetes this is possible through the use of Namespaces.
I don't want to get to in-depth if you are like you say a "Kubernetes n00b", but Docker containers are held in Pods and talk to each through Services, both of which can be restricted to a specific Namespace.
So you could have a Pod called "front-end" that talks to a Pod called "backend-end" through the "back-end" Service, this could be deployed three time in three different Namespaces and each "front-end" Pod would live in it's Namespace and talk to it's own "back-end" Pod through it's own "back-end" Service all in the same Namespace.