Linux supports about a dozen virtualization technologies, and modern distros, e.g. Ubuntu 12.04, makes it trivial. Here's what it takes to start a new Ubuntu based container (less isolated, but more than enough for a dev environment) on Ubuntu 12.04:
lxc-create -n [some name] -t ubuntu
Then:
lxc-start -n [some name]
to start it and get the console (or tack on "-d" to run it in the background)
Ubuntu by default starts dnsmasq to serve up local dns results for vm's, so you can ssh to them, and setting up a tunnel for external access is easy.
LXC also works fine on Debian, though the experience isn't quite as polished.
Otherwise, you can use KVM, Qemu, Virtualbox, Vmware, Xen, OpenVz and more. In all cases, you can use the same deployment tools: Build .deb's and set up a local APT repo (just a directory you run dpkg-scanpackages over), or use Sprinkle or use Chef or Puppet or half a dozen other tools. Use buy into Ubuntu's orchestration tools (in particular Juju,which supports direct deployment onto LXC locally, OpenStack or EC2 for now)
In other words, putting your environments on a Linux box doesn't remove the ability to have copies of the deployment environment or building, deploying or testing automatically - it adds a massive number of additional options for how to do it. In particular, it lets you do it in ways that translates directly to private or public Linux based cloud solutions.
Sorry - I just answered the "Why do you use it in a VM" bit, and ignoring the "why a Mac" bit :-)
The "Why a Mac" bit is because I find I'm more productive on a Mac - and I like them.
(By "more productive" I mean I've actually tracked and measured the stuff I get through each day during several months of using both platforms - ubuntu on the Linux side - and found I come out ahead on the Mac. I didn't try this with Windows coz, until Windows 8, I actively disliked the OS and didn't feel I needed to use something I didn't like even if I did turn out to be more productive :-)
I am very happy with Linux. All our boxes that aren't Mac's are Ubuntu - including some folks personal machines. My personal view towards hardware is you get whatever you feel most productive on. I've been using Unix-ish platforms for large chunks of my working day since 1988. For more than five years I used nothing but Unix-ish boxes (SunOs then Solaris then Linux). I spend large chunks of my day dealing with unix via various terminal windows. I don't find Linux scary or confusing. I just happen to like Macs, and some of the work that I do is easier to do on Macs.
"In other words, putting your environments on a Linux box doesn't remove the ability to have copies of the deployment environment or building, deploying or testing automatically - it adds a massive number of additional options for how to do it. In particular, it lets you do it in ways that translates directly to private or public Linux based cloud solutions."
I never meant to imply in any way that putting things on a Linux box removed the ability to have copies of the deployment environment or building, deploying or testing automatically. My apologies if I was not clear about that.
I know how lxc-create et al work. If the number of virtualisation options were the main factor I had in picking the OS of the machine my keyboard is attached to I'd be using a Linux based laptop. For me, personally, it isn't. So I'm not. That is, of course, in no way saying that Linux laptops are bad (have 'em, use 'em, love 'em). Just that they're not the best fit for me and the work that I do (and I have graphs to prove it :-)
lxc-create -n [some name] -t ubuntu
Then:
lxc-start -n [some name]
to start it and get the console (or tack on "-d" to run it in the background)
Ubuntu by default starts dnsmasq to serve up local dns results for vm's, so you can ssh to them, and setting up a tunnel for external access is easy.
LXC also works fine on Debian, though the experience isn't quite as polished.
Otherwise, you can use KVM, Qemu, Virtualbox, Vmware, Xen, OpenVz and more. In all cases, you can use the same deployment tools: Build .deb's and set up a local APT repo (just a directory you run dpkg-scanpackages over), or use Sprinkle or use Chef or Puppet or half a dozen other tools. Use buy into Ubuntu's orchestration tools (in particular Juju,which supports direct deployment onto LXC locally, OpenStack or EC2 for now)
In other words, putting your environments on a Linux box doesn't remove the ability to have copies of the deployment environment or building, deploying or testing automatically - it adds a massive number of additional options for how to do it. In particular, it lets you do it in ways that translates directly to private or public Linux based cloud solutions.