1

Suppose I had three apps that are currently hosted at Digital Ocean or AWS. Each of them use at least one VM for the database and one or more VMs for the web app.

Now let's say that I wanted to get one dedicated server at OVH with 64GB of RAM and use docker to deploy these apps. Each project would have its own docker-compose file. I'm thinking of two ways of doing this:

  1. Install VMWare Esxi on the server, create one VM for each project and deploy docker containers for the web and database.
  2. Just install Ubuntu as the host OS and manage containers for all apps using separate network entry points(IPs) for each project.

Would I be wasting too much of the server resources going for the first choice? Would I be overcomplicating my infrastructure by going for the second?

I understand both are valid choices, but what would be the better/suggested way?

Thanks for the help!

1 Answers1

0
  1. will need a full VM for each app with all the memorysharing and I/O stuff. You may use memory ballooning with virtual box (ESXi should have such a feature too, maybe named different). And within every VM you'll have have the docker stack included.
  2. If you use a native OS you'll need the docker stack only once.

What OS do you use within your docker images? An 200MB Ubuntu? Or a 5MB Alpine? If you choose Alpine as your host OS and/or your image OSes you'll be able to keep your "container overhead" much smaller

It depends what system services your apps need, like cron, upstart, ... how much resources does the app need? Is it JVM based app that needs an own JVM in every container? Etc...

At first hand I would plan an Alpine Host with Alpine docker images. If there are Apps that realy need Ubuntu images you can just use it in the image for that specific app.

Have also a look at Docker vs. VM

Community
  • 1
  • 1
Sascha
  • 1,156
  • 9
  • 13
  • Hi Sascha, thank you for the response. I don't think I'll be able to install ubuntu alpine as the host. https://www.ovh.com/us/dedicated-servers/os.xml?range=HOST. I guess having an Ubuntu host with Ubuntu Alpine images won't be a problem, or am I missing something? – Rodrigo Machado Feb 19 '16 at 16:12
  • Btw, I'll be running JRuby within the app containers, so yes, it will need its own JVM. Other than that, I'll need postgres, nginx and redis containers. – Rodrigo Machado Feb 19 '16 at 16:18
  • If you are not used to setup/use alpine, it should be fine to use Ubuntu as your host plattform. Alpine is build for servers so it would work fine, but there are differences to ubuntu of course. Esp. if you'll publish your services to the net you should respect facts as security, your experience and compfort in administration etc much more than the megabytes you would spare. You could just give alpine a try, have a look at http://wiki.alpinelinux.org/wiki/Install_to_disk If you need help to set up alpine images, let me know – Sascha Feb 19 '16 at 16:28