
Announcing Docker ToolBox - anand-s
https://blog.docker.com/2015/08/docker-toolbox/
======
girvo
Nice one. However, VirtualBox's shared-folder support is so god-awfully slow,
that here at work we all swapped out the regular boot2docker setup for
boot2docker-xhyve[0] which is so much faster at nearly everything that it's
not even a comparison.

Now, with ailispaw's dockeroot-xhyve you can even get a VM root image that can
be grown on the fly, so you never run out of space on your VM when building
large Docker images.

In addition, I'd never recommend Docker Compose to web developers that rely on
databases, as quirks with it have caused many a volume-only container to be
destroyed and rebuilt, thus defeating the purpose.

[0] [https://github.com/ailispaw/boot2docker-
xhyve](https://github.com/ailispaw/boot2docker-xhyve)

~~~
elvis635
Docker under OSX is a real pain to solve ASAP.

I've set Docker on my Linux machine and it's working like a charm. Then I had
to do the same for my coworkers running OSX, the vbox shared folders are
definitely unusable.

Now it's been few days that I'm trying to find the best way to have a two-way
sync in order to sync back changes from docker to the OSX folder (eg. when you
upload a file and it's saved in the /public folder, otherwise it'll be lost)

So far I've used docker-osx-dev[0] for 1 way sync (with rsync) and it's
working nicely.. they also plan to add the support to unison for a 2way sync

I've also found docker-unison[1] but I haven't found a way to have it working
correctly

I'd like to try with boot2docker-xhyve, but it only runs on Yosemite and later

[0] [https://github.com/brikis98/docker-osx-
dev](https://github.com/brikis98/docker-osx-dev)

[1] [https://github.com/leighmcculloch/docker-
unison](https://github.com/leighmcculloch/docker-unison)

~~~
bradgessler
There's
[https://github.com/codekitchen/dinghy](https://github.com/codekitchen/dinghy)
if you want to mount the Mac host volumes inside boot2docker via NFS. We have
a Vagrantfile that does this, but dinghy packages it all up nicely.

At the end of the day though, Docker as a development environment is really
bad on OS X until a VM vendor fixes file share performance. I really wish
Docker would make it a priority to have decent Mac support.

~~~
huslage
VMware Fusion has fine performance on shared folders. I use it all the time
with docker-machine.

------
nzoschke
Great release!

I bought a new MacBook 2 days ago, and setting it up has never been easier.

Almost all of my development takes place in a Docker environment now, and the
Docker ToolBox makes installing that a breeze.

Less XCode, Homebrew, rubygems, npm. More Docker.

------
raesene4
This looks cool, although for the Windows install I'd have hoped that there
would be an option to integrate Hyper-V with it instead of Virtualbox, seeing
as Hyper-V is available on all Windows 8.1/10 pro/enterprise systems, and
having multiple virtualization platforms active on a system is generally a bad
idea...

~~~
mattchamb
There is a hyper-v driver for docker-machine. You can use it like so:

    
    
        docker-machine create -d hyper-v vmname

~~~
raesene9
nice, thanks!

------
shykes
Hi all. We know the experience of using Docker on OSX is not perfect today.
The default virtualbox configuration for file sharing is slow and buggy. You
need to use 3 different CLIs (`docker`, `docker-machine`, `docker-compose`)
which are not well integrated. 3d-party clients need to reimplement everything
themselves. The standard clients are not configurable or customizable enough.

We plan on solving all of this. There is a new team at Docker focused entirely
on solving "Developer Experience" problems. This initial release of Toolbox is
a starting point: a convenience packaging of existing tools. But we are going
to update it with more and more improvements.

In short: we are going to work hard to make the experience of using Docker to
develop on Mac OS X (and Windows) much, much better.

~~~
nogox
Hi Solomon,

It is great to hear you guys are working on that. I find Hyper is pretty
interesting to run Docker on Mac
[https://hyper.sh/blog/post/2015/07/30/running-containers-
fro...](https://hyper.sh/blog/post/2015/07/30/running-containers-from-mac-
os-x.html).

~~~
shykes
I think Hyper is interesting as a backend for Docker in production use cases
where you need to extra isolation of VMs... But in development in doesn't make
much sense to run each container in a separate VM. So I'm not convinced we
need this extra layer of abstraction.

------
msravi
I really, really, don't understand the docker fixation, but maybe I'm missing
something.

The most important function of docker, IMHO, is that it standardizes the
creation of a VM using Virtualbox across platforms.

Unless Amazon AWS, DigitalOcean, GoogleCompute, etc. allow a docker image (aka
a VirtualBox image) to run directly on their base virtualization platform
(without me putting together an AMI or whatever on their platform), this just
adds another layer of virtualization that I can do without. Do they do this
already?

If and when they do that, docker would be tremendously useful because I
wouldn't need to rebuild my image for that particular platform (AWS/DO/GC).

And if they do that already, then why aren't they just accepting existing
popular VM images (VMWare/VirtualBox)?

~~~
rcarmo
You're misunderstanding what Docker does.

The most important function of Docker is dependency management (allowing you
to pack your own runtime with your apps with consummate ease), followed by
standardising image distribution and deployment across environments.

A Docker image is not a VM image - it doesn't have a kernel, for starters, and
is not designed to be booted in the usual sense (i.e., kernel+init+scripts) -
it just has a Linux userland (often quite restricted) and will run _a single
process_ by design[1].

Also, AWS and Google Cloud already allow you to run Docker images (on EC2
Container Service and Kubernetes).

Cloud providers won't accept existing VM images in the sense that large-scale
hypervisor platforms usually use different formats and they don't need the
hassle involved in building and supporting VM conversion services.

It's pointless to have those as a service when anyone can grab Packer or a
similar tool and convert a .vbox/.vmdk to an AWS AMI or an Azure Hyper-V image
- and support the resulting images themselves (which is another reason why
providers make a clear distinction between certified/tested images and third-
party ones).

[1]: of course you can launch supervisord and a bunch of stuff underneath it,
but if you're doing that, you're doing it wrong.

~~~
msravi
Ok, this is starting to clear things up for me.

When you say that it runs a single process by design, does it mean that if my
application creates a fork(), the image will be unable to handle scheduling of
the additional process?

Let's say I have an application that talks to MySQL. What is the right way in
docker? Should I have two separate docker images, one running the application
and the other running MySQL, with them talking to each other across the host
OS? Or can they be configured in a single docker image?

~~~
Kudos
> Should I have two separate docker images, one running the application and
> the other running MySQL, with them talking to each other across the host OS?

Yes.

> Or can they be configured in a single docker image?

They _can_ , but it's an anti-pattern and there are hurdles to overcome if you
try managing processes using an init system.

~~~
nileshtrivedi
People differ on this point. Discourse, for example, ships a single Docker
container which runs the Rails-based webapp, a database server (PostgreSQL),
and a key-value store (Redis). They have been using this same setup in
production for quite a while now.

~~~
cmelbye
So how do they run multiple application servers to scale horizontally? Or a
cluster of Redis servers?

------
tkubacki
I gave up setting up my mac for Docker. It's just way easier to set up another
dev machine with Linux since it can be used as dev machine these days.

------
davexunit
Just use GNU/Linux already!

~~~
codelitt
It's true. Docker Just Works™ on GNU/Linux. I'm a Linux guy myself for
anything in development. However, unless I'm mistaken, part of the goal of
Docker is to provide identical environments to an engineering team and
production.

I always advocate for Linux use (in addition to principles, most things are
easier as well), but everyone has their preferred environment.

------
npx
You can stand up Joyent's Triton[1] service locally for development with
Docker. The hardware is very affordable, and I think that they have a very
underrated product on their hands.

[1] [https://www.joyent.com/blog/spin-up-a-docker-dev-test-
enviro...](https://www.joyent.com/blog/spin-up-a-docker-dev-test-environment-
in-60-minutes-or-less)

------
9point6
Anyone have any idea how to configure this with a proxy in OSX? It seems to be
ignoring the HTTP_PROXY env variable

------
shaan7
Or, just run docker directly on Linux?

------
flurdy
I appreciate the Toolbox suite as I use most of them. But I am concerned
though not surprised how this make the "batteries included but removable"
motto more insignificant as it becomes more unlikely that people will use
alternatives.

------
starikovs
I use Vagrant+Docker for development, no problems to install. First, I tried
to use boot2docker but I didn't like it. Vagrant has a Docker provisioner or
there's a plugin for Vagrant for Docker Compose.

------
macmac
Does anyone have any idea how to get the Docker Quickstart Terminal app to use
iterm2/zsh instead of Terminal/bsh?

~~~
SloopJon
If you look at the contents of the .app, you can edit main.scpt in AppleScript
Editor, but it's really just doing two things, creating the VM if necessary:

docker-machine create -d virtualbox --virtualbox-memory 2048 default

and populating environment variables for docker:

eval $(docker-machine env default)

Passing --shell zsh to docker-machine env doesn't seem to change its output.
Does zsh understand commands like the following?

export DOCKER_MACHINE_NAME="default"

~~~
zenlikethat
Yep, `docker-machine env` should work fine in zsh (I am a daily zsh and
docker-machine user).

------
FlyingSnake
Sadly no support for Parallels.

~~~
vincentriemer
The docker team completely ignored the great work the parallels team put into
creating a parallels driver instead telling them to wait for the plugin
architecture to be finished.

Reference:
[https://github.com/docker/machine/pull/939](https://github.com/docker/machine/pull/939)

~~~
shykes
It was a tough decision, and "completely ignored" is an unfair way to put it.

The Machine maintainers are overwhelmed by pull requests adding new drivers.
They are worried about maintenance load, and its impact on the quality of
drivers over time. So instead of making promises they can't deliver on,
they're investing the time on a plugin architecture, so that everyone can
create and add their own drivers without depending on the bottleneck that is
the core maintainers.

------
anentropic
boot2docker was working fine... Docker Toolbox is broken

