I have a couple of Docker swarm questions (Sorry for not splitting them up but they are all closely related):
- Do all instances in a swarm have to run on different machines or can they all run on the same? (if having limited amount of hardware and just wanting to try swarm mode)
- Do I have to run swarm mode to be able to communicate between instances?
- What is the key difference between swarm mode and just running a number of containers as regular?
- What are the options of communication between instances of containers? (in swarm and in regular mode) http? named pipes? other?
- If using http communication between containers on same machine, will it be roughly similarly as fast as named pipes?
- Is there any built in support for a message bus or similar in Docker?
- Is there support for any consensus protocol in Docker?
- Are there any GUI's for designing, managing, testing and/or debugging Docker swarms?
- Can a container list other containers, stop/restart some and start new ones? (to be able to function as a manager for other containers)
- Can a container be given access to OS-features (Linux in my case) to configure for instance a reverse proxy or port forwarding on the WAN?
Background: What I'm trying to figure out is how I should go about and build a micro service mesh using Docker. The containers will be running .NET Core. I'm not too keen on relying too much on specifically Docker since it may not be the preferred tech in a couple of years. What can/should I do with Docker and what can/should I do inside the containers. That's what I'm trying to figure out.