I am sorry in advance that will be a long question series.
What I want to understand might be a sort of best practices of Docker. I am about to start a new company and unfortunately met too late with Docker / Containerized Apps. I have been learning and trying to use Docker and Microservices for the last couple of weeks. Although I am aware of what the cloud is, I believe I have a lack of Cloud systems. Therefore, I am here to ask some questions some of which might be stupid.
I understand the idea of using Docker but still want to ask, On cloud or on-premise, should we use only one big VM for Docker Engine and use lots of containers in it?
Should we split our docker-machines in Docker Engine which is in this Big VM?
If the answer is Yes for any of the questions above, what happens to our resources (Network, Disk IO, Ram, CPU)? Is it ok because it is “Big VM”? Are there any solutions for these kinds of problems on Cloud systems?
Should we keep our secure Registry in the main Docker or put it in any other Docker Engine machine in the same network?
As we know in docker swarm mode, docker has load balancing in manager nodes, should we use any other load balancing mechanism out of our main docker-engine which forwards the requests to manager nodes?
Should we keep our ApiGateway mechanism out of the main docker-engine to allow forward all the requests through docker-engines/docker-machines?
As considering we use microservice architecture, where should we locate our common database data if we use multiple nodes in swarm mode? The storage should be accessed from all nodes.
In the example of Microsoft shared with those who want to use many kinds of patterns, I only can see one docker host and all the containers located in it. Will it be still useful when the request count increase?
For instance, when I have around 100 microservices most of which have its own database, can only one docker-engine instance in any cloud solution handle all the requests? Should I Resource management, disk IO speed management or etc?
Or, with all of your experiences, what kind of structure with Docker + Microservice would you use to build a large scale project?
Would you use Cloud solutions? (Pricing, Easy Managing, Flexibility, Easy Resource Managing, Availability)
Would you rather choose a dedicated server than a dynamic resource cloud solution?