To add some technical explanation to what larrybud said: Docker containers aren't full VMs. They don't virtualize the computer hardware or the OS kernel. So when you run a bunch of Docker containers on a computer, all of those containers are still using the same underlying OS kernel. Docker really only natively runs on Linux (and BSD), and all Docker containers are running in Linux, so running a Windows VM inside a Docker container would really only be possible if you also ran something like VirtualBox inside the Docker container (and I can't really imagine that working or being a good idea).
In short: VirtualBox is still probably the best option for running those IE VMs, and for cases like this Docker is not really a replacement for or competitor with solutions like VirtualBox.
Essentially, they have a docker-API-compatible HTTP server that runs a different set of container images. Similar to how SmartOS has a docker-API-compatible HTTP server (running on top of, essentially, a Linux emulation layer).
Microsoft gave a big pile of cash to Docker to figure out how to make Windows based Docker images.
I haven't been following it closely so I don't know what's become of it since then, but if you want IE you're going to need that work.
For other browsers, the Selenium team maintains docker images containing all of the drivers and XVFB code to make them run. They even have a debug image with xvnc on it so you can spy on the browser if something is going wrong.
> Microsoft gave a big pile of cash to Docker to figure out how to make Windows based Docker images.
Actually Microsoft has been contributing quite a bit to the OCI (Open Container Initiative), as well as Docker. So they have been putting in the work. I'm not really partial to Microsoft, but they do have some good engineers that are working on free software.
My big issue with Docker on Mac is that, if I understand it correctly, I have to provision the max amount of RAM my containers will need and have that sitting, consumed, when Docker is enabled (the Linux VM is running).
At least with traditional VMs for development I can spin up a few low memory VMs (256MB, for example), using just as much RAM as needed. My understanding is that running one low memory Docker container will cause the VM to consume 4GB (or whatever my default is). On a MacBook, where RAM is at a premium, this doesn't work for me.
I imagine the native experience on Linux is much nicer.
Theoretically, any network setup a virtual machine manager can do, so should a container engine. The bulk of the work setting up the network happens on the host side anyway, and Linux guests can be made to see whatever network interfaces the host/engine wants it to see.
systemd's containerization solution supports quite a few ways to construct network setups. Look for 'network' in `man systemd-nspawn`.
I can't say much about Docker's support though. Haven't used it since 0.6, and I didn't have a favourable opinion of their network management ideas back then either.