Should You Install Docker with the Docker Toolbox or Docker for Mac / Windows?
If you're running MacOS or Windows you have a few options for installing Docker. There's even a third way too, and we'll compare them here.
If you’re on MacOS or Windows you can install Docker with:
- Docker for Mac / Windows
- Docker Toolbox
- Running your own Virtual Machine and installing Docker yourself
All 3 of those options have their own pros and cons and in this article we’re going to cover them. If you’re looking for a high level overview of what Docker for Mac / Windows and Docker Toolbox is, then check out this article on getting to know Docker’s ecosystem.
OS and Hardware Requirements
It’s helpful to know what you can install before we compare everything, so let’s do that:
Docker for Mac
Docker for Mac requires that you’re running Yosemite 10.10.3+ or newer but it’s worth mentioning that you should upgrade to 10.11+ because 10.10.x releases are considered “use at your own risk”.
You CAN run VirtualBox alongside Docker for Mac as long you’re using a somewhat new version of VirtualBox. All of the 5.x releases are ok. This is pretty useful because you might have some legacy apps running in Vagrant / VirtualBox to deal with (I know I do!).
Docker for Windows
Docker for Windows requires that you’re running Windows Pro, Enterprise, or Education edition. Sorry, Home edition isn’t available and that’s because Microsoft doesn’t currently allow Hyper-V to be installed on Home editions.
Also, unlike Docker for Mac, you cannot run any version of VirtualBox, VMWare or any other Type 2 hypervisor along with Docker for Windows. That’s because Docker for Windows uses Hyper-V under the hood which is a Type 1 hypervisor.
If you can’t run Docker for Mac or Docker for Windows then there’s the Docker Toolbox. It has much less strict requirements. As long as you can run VirtualBox then you’re good to go (Docker Toolbox manages this for you).
It works all the way back to MacOS 10.8 and Windows 7 (yep, even Home editions).
Your own Virtual Machine
Docker will happily run inside of VirtualBox, VMWare or any other Type 1 / 2 Hypervisor that’s running a major distribution of Linux.
So, similarly to the Docker Toolbox, rolling your own VM has the same requirements.
Pros and Cons
Now for the good stuff!
Docker for Mac / Docker for Windows
Offers the most “native” experience, you can easily use any terminal you you want since Docker is effectively running on
localhostfrom MacOS / Windows’ POV.
Docker is heavily developing and polishing this solution.
On Windows, if you have legacy apps that need a VM, you can’t reasonably do both.
On Windows, volume mount performance is still quite poor, but it’ll improve in due time. Update Nov 2017: Volume mount performance is very usable now on Windows!
Offers an “out of the box” Docker experience if you have no other choice.
May offer better volume mount performance under Windows (but this will change).
You need to either use the Docker Quickstart Terminal, or configure your own terminal to connect to the Docker Daemon running a VM.
Not a native solution, so you’ll need to access your Docker Machine’s IP address if you’re developing web apps. Example:
Suffers from typical VirtualBox edge case bugs and mount performance issues.
Your own Virtual Machine
I’m not going to bother listing a pros and cons here because I wouldn’t recommend doing this UNLESS you plan to go all in with a Virtual Machine set up.
But more on that in a bit…
Which One Should I Use?
If you’re interested in Docker, you’re a smart person and you probably came to the conclusion that using Docker for Mac or Docker for Windows is a good idea (if you can run it).
My recommendation would be to try Docker for Mac / Windows first, and test it against your actual use cases. The performance issues may or may not be a concern, especially since everyone’s needs and computer specs are different.
On Windows and Like the Idea of Running Linux Too?
I want to mention a “roll your own VM” solution for Windows users because I feel like there’s an even better way to run Docker on Windows if you also like Linux.
I no longer use what is described below
It has been fully replaced with another Windows based set up that uses WSL and MobaXterm. It is super solid for full time development.See The Updated Version!
It involves running VMWare in a special mode called “Unity mode”. This basically allows you to run Windows and Linux together seamlessly as 1 operating system.
There’s no dual booting and Linux applications (even graphical apps) run in their own floating windows. Then you can install Docker natively on Linux inside of the VM.
The performance is excellent and the entire set up is free too.
This is what I use personally and have been doing it for years. It gives you the best of both worlds. For example, I run high end audio / video apps on Windows while recording courses and screencasts that cover Linux content. It all works great (even for full time development).
You can watch a video guide and see screenshots on how to do that in this post on creating an awesome Linux development environment in Windows.
Are you using the Docker Toolbox, Docker for Mac / Windows or your own VM?