mitchellh / boot2docker-vagrant-box

Packer scripts to build a Vagrant-compatible boot2docker box.
424 stars 183 forks source link

Update to 1.3.1 #75

Open mlevin2 opened 9 years ago

mlevin2 commented 9 years ago

Hi,

Thanks for providing this. Works great. Wondering if you will be upgrading to support 1.3.1 any time soon.

jure commented 9 years ago

:+1:, docker is already at 1.4.0.

jwhitcraft commented 9 years ago

1.5.0 is out now

WillChilds-Klein commented 9 years ago

Hi,

just checking in to see if either I'm clueless or this problem indeed persists. I'm running vagrant 1.7.2 courtesy of Homebrew.

Vagrant is using the default mitchellh/boot2docker box with version 1.2.0 which has docker version 1.2.0 and API version 1.14 for both client and server. the issue is that Homebrew has installed docker client version 1.18 and API version 1.6.0.

pointing my $DOCKER_HOST at the default vm that vagrant automatically sets up and executing a docker command (e.g. docker ps -a) locally (on my mac) then yields the error

FATA[0000] Error response from daemon: client and server don't have same version (client : 1.18, server: 1.14)

I've tried deleting the box file ~/.vagrant.d/boxes/mitchellh-VAGRANTSLASH-boot2docker, which forces an update, but keep getting the same version (1.2.0).

I really like vagrant and it's tao/zen/etc, but this is a major issue for me, as it renders my local docker cli useless. Is the issue really that the box's version is out of date (which could be fixed by a simple update/push by @mitchellh ?), or am I missing something?

ches commented 9 years ago

Because this box is always woefully behind, I would recommend that you all just use yungsang/boot2docker, or else get used to building your own up-to-date version of this box by following the Packer instructions in the README.

Vagrant has a built-in Vagrantfile to use mitchellh/boot2docker by default when you use the Docker provider. The docs tell us how to override this (see the "Host VM" section of the page). In short, you just need to add the following to the Vagrantfile in your project:

# Override Vagrant's default Docker host VM that uses mitchellh/boot2docker box
config.vm.provider "docker" do |d|
  d.vagrant_vagrantfile = "./dockerhost/Vagrantfile"
end

Then, create ./dockerhost/Vagrantfile (or wherever you wish to put it) by copying the contents of Vagrant's default version, and updating it to your liking:

If there's an appropriate place to document these steps in more detail than they're already covered by the provider doc linked above, I'll be happy to whip up a doc PR. Mitchell's a busy guy. I wish he'd find a way to enable some others to keep this box up-to-date since it's a default in Vagrant core (and give some love to vagrant-aws, but don't get me started…).

WillChilds-Klein commented 9 years ago

awesome, thanks @ches for the tips! I agree, having those instructions in Vagrant's docs would be super helpful. Since leaving that comment, I've switched to Docker Machine for all of my docker-related VM/host management needs. Machine has been a wonderful tool for me so far, and I'd suggest it to anyone encountering these issues.

That said, I really do appreciate Vagrant. I use it for all of my non-docker VM management needs, and will be keeping tabs on this so I can switch back once doing so is more practical.

rjbrown99 commented 9 years ago

I will also draw attention to Dinghy: https://github.com/codekitchen/dinghy

Built as a derivative of this project with boot2docker. As of this writing it's @ 1.7.0 and is a very easy deploy to get it up and running. Wish I had found that yesterday - would have saved me hours.

improved-broccoli commented 9 years ago

Or you can just:

  1. Clone this repo
  2. From the master branch, edit the template.json file to leave only the vbox image building
  3. Then build it with packer
  4. Create a Vagrantfile using the image you just build: it will be your docker host
  5. In your app Vagrantfile, set d.vagrant_vagrantfile to the path of your docker host Vagrantfile

It's not that complicated.