How to arrange web application docker containers in production stage

I’m approaching to the Linux Container world by looking at one of maybe the most famous and used containers manager that is Docker. I have quite clear the advantages of using Docker at the development stage. Fast and easy creation of image including any sort of application (database, server, etc…) but I haven’t clear yet the advantages in production. I mean let’s assume two have three different instance running on AWS running docker. In one instance I decide to run a web server container (nodejs), in the second one a database container (mongodb) and the last one a cache container (redis). All these ones running in their own container running in one separate instance. The deployment is fast and easy but how many others containers can I run in the other instance and which one? I don’t mean to say the maximum number of containers. I know that it depends from the memory. I mean which other kinds of containers could have the reason to running in one of these three instance? For example I would add in the future nginx. In which of this one should I place it? Should I take another aws ec2 instance?

  • Error Docker deployment in Amazon Elastic Beanstalk - Docker container quit unexpectedly
  • AWS Elastic Beanstalk deploying Docker with simple SpringBoot Eureka image failure
  • Dockerfile custom commands/directives
  • modify a container in stopped state
  • Jenkins and Docker
  • Docker bridge network, HTTP calls between containers VERY slow (after docker upgrade)
  • Dockerrun.aws.json structure for ECR Repo
  • How to use data in a docker container?
  • Docker - Access linked Container
  • Can you generate and apply patches to a docker container offline?
  • How do you deploy properly to AWS with Elastic beanstalk and Dockerrun.aws.json?
  • CLion in docker container not finding clang after install
  • One Solution collect form web for “How to arrange web application docker containers in production stage”

    As you said, it will depend on your resource requirements which containers you place together. However, AWS offers container service (in Preview) that allows running docker containers and comes with a scheduler that can decide where to put things. Maybe this would be an option?

    From http://aws.amazon.com/ecs/details/:

    Amazon EC2 Container Service comes with a default scheduler that
    schedules containers to help find the optimal instance placement based
    on your resource needs (e.g., CPU or RAM) and availability
    requirements. The EC2 Container Service APIs also provide you with
    complete cluster state information, allowing you to write your own
    scheduler or integrate existing 3rd party schedulers if you choose.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.