docker-machine on OSX

I used to use boot2docker on OSX, but when I came to install it on my new machine I noticed that it was deprecated and that it should be replaced with the Docker Toolbox.

I like to manage my tools with Homebrew so I used brew cask to install the Docker Toolbox.

brew cask install dockertoolbox

The first thing the Docker Toolbox will try to do is update Virtualbox to the latest version. If this doesn’t work, you probably have Virtualbox machines running that can’t be automatically shut down (in my case, I needed to provide my sudo password for the vagrant-hostsupdater plugin). The error message will look something like this:

==> Failed command:
["/usr/bin/sudo", "-E", "--", "/usr/sbin/installer", "-pkg", "#&";, "-target", "/"]

==> Output of failed command:
    6513 ??         0:20.04 /Applications/ --auto-shutdown
    6601 ??        10:43.73 /Applications/ --comment joindin-vm_joindin_1443821732951_46821 --startvm c02e4c4e-c423-432f-9ab0-c8fa732b1080 --vrde config

I use Vagrant so I listed all my running machines using $ vagrant global-status and stopped them by hand. After doing this I re-ran brew cask install dockertoolbox and it went through fine.

Once it’s all installed, we need to create a VM to run docker in. If you don’t already have it locally, this will download a small boot2docker iso (not to be confused with the boot2docker tool).

docker-machine create --driver virtualbox docker

Once this is running, you can provide the environment to the docker utility via env variables just like we did with boot2docker.

docker-machine env docker

We can load those details into our session with the following line:

eval$(docker-machine env docker)

Then, fingers crossed we should be able to run the “Hello World” container

docker run hello-world

If you can do that, congrats! You’ve just set up Docker on OSX with docker-machine.

October 18, 2015

How To