I am looking to develop a software system that involves a series of servers all communicating with each other over a network. It shall be Linux based (preferably Ubuntu). It shall use TCP/IP sockets to communicate.

Before actually buying hardware for this, I would like to test my design and code using virtual machines.

Therefore my actual question is: Is there a Linux based virtual machine system that will allow you to startup multiple (virtual) servers, and have them communicate with each other?


There is indeed :) I'm sure this can be done using Xen or KVM, but the easiest I've found (if I have understood your question correctly) is Oracle's VirtualBox. There's two versions generally available for download, the Open Source edition, which is generally in most major distros' repos. (eg. sudo aptitude install virtualbox), or you can add the slightly newer proprietary version from VirtualBox's website (there's a repo. that's easy to set up).

You'll need to configure the networking setting both on each virtual machine and your pc/laptop. It's a process with rather a few steps, but not overly-complex.

Without regurgitating what others have outlined already throughout the Internet, here's a link to a decent guide: http://technology.amis.nl/2014/01/27/a-short-guide-to-networking-in-virtual-box-with-oracle-linux-inside/

  • This looks like a very good option -- will wait a few days before accepting this as final.
    – NWS
    Nov 8 '14 at 15:59

A new alternative that seems to be getting a lot of traction is Docker, which allows you to build a virtual machine "recipe" (e.g. Use this OS, install these packages, and on boot run that command) and launch it quickly from the command line.

The advantages are that it's not a complete VM, meaning you can still share some common files with the host without much of a hassle, by linking guest paths to host ones. Each image holds a Linux kernel and the base OS, and runs independently from each other: You can create one image and boot it multiple times concurrently, it will keep them isolated nicely.

It's quite simple to set up, and doesn't get in the way of the rest of your system.

To connect multiple containers, there's a nice tutorial on the official documentation: Linking containers together

I'm not associated with Docker in any way, except as a user.

As pointed out by ber444, Google Cloud Platform now supports Docker! So you can easily jump your local tests to the cloud without any hassle.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.