@nathanleclaire nathanleclaire released this Nov 3, 2015 · 1731 commits to master since this release

Assets 8

Installation

Installation will be slightly different than in previous releases. As noted in
the next section, there is now a binary for each driver as well as for the core
Docker Machine client, so the instructions to install are:

  1. Download the .zip file for your OS and architecture.
  2. Extract the contained binaries to your PATH.

e.g., for Mac OSX:

$ curl -L https://github.com/docker/machine/releases/download/v0.5.0/docker-machine_darwin-amd64.zip >machine.zip && \
  unzip machine.zip && \
  rm machine.zip && \
  mv -f docker-machine* /usr/local/bin

Linux:

$ curl -L https://github.com/docker/machine/releases/download/v0.5.0/docker-machine_linux-amd64.zip >machine.zip && \
  unzip machine.zip && \
  rm machine.zip && \
  mv -f docker-machine* /usr/local/bin

Windows (using git bash):

$ if [[ ! -d "$HOME/bin" ]]; then mkdir -p "$HOME/bin"; fi && \
  curl -L https://github.com/docker/machine/releases/download/v0.5.0/docker-machine_windows-amd64.zip >machine.zip && \
  unzip machine.zip && \
  rm machine.zip && \
  mv -f docker-machine* "$HOME/bin"

Features

Driver Plugins

The major new feature in this release is that Docker Machine has moved from a
model where all implementations of drivers (such as virtualbox, amazonec2,
digitalocean, etc.) are hard-coded in the source to one where they are loaded
from external binaries (communication happens via net/rpc). Therefore, anyone
can write and distribute a driver for Docker Machine which interacts with the
provider of their choice through the main Docker Machine binary without needing
to get their code merged upstream into the mainline repo.

Consequently:

  • Driver authors can merge code faster without needing to go through the Machine
    maintainers
  • Driver authors can release new versions of their drivers as frequently as they
    like
  • Code for both the core Machine binary and plugin binaries will compile faster
    as it links to fewer dependencies
  • Anyone willing to maintain and distribute a plugin can do so and have it work
    with the mainline Machine binary

More formal documentation on the underlying model, how to implement a driver,
tooling around cross-compiling and releasing them, etc. will be added in the
next few weeks.

For this release, we will be distributing each plugin that Machine currently
supports in the archive file containing the core Machine binary and the plugin
binaries. In the future, the Docker Machine core maintainers will develop and
distribute only the following drivers in order to increase focus and quality:

  • virtualbox
  • amazonec2
  • azure
  • digitalocean
  • generic
  • none

The code for these will be kept as a part of the main Machine repository, and
will continue to be worked on there as usual. Likewise, they will be distributed
via the Docker Toolbox.

The code for the following drivers will be split into their own repositories
intended to be owned by their current maintainers and/or interested community
members:

  • exoscale
  • google
  • hyperv
  • openstack
  • rackspace
  • softlayer
  • vmwarefusion
  • vmwarecloudair
  • vmwarevsphere

Again, all current drivers will be included in this release, but we will only
be distributing the first set listed above in the future
. Therefore we expect
maintainers of the plugins on the second list to assume responsibility for
distribution and maintenance of their driver independently. If you are a current
driver author or maintainer, we will work with you to ensure that this transition
goes as smoothly as possible.

For any questions, concerns, or feedback, please reach out to nathan@docker.com
or file a GitHub issue.

libmachine

A large effort was made in this release to make the Docker Machine codebase more
modular and pave the way for a future where machine operations can be invoked
directly from external Go programs without needing to shell out to the Docker
Machine CLI. Long-term, this is intended to help users such as Kitematic
or Rancher who are invoking the Machine CLI programatically today do so more
elegantly.

Using libmachine independently as an external module is marked as a "highly
experimental" feature in this release (there are known issues), but as much effort
has been made to decouple the CLI and the API which it relies on as possible.
Users are encouraged to experiment. Some of the interfaces are likely to change
as the best solutions become apparent, so be advised of that possibility.

VirtualBox Stability Fixes and boot2docker parity

Many users expressed concerns over stability in the recent migration from
boot2docker-cli to Docker Toolbox / Docker Machine. We have been listening and
working as intensely as possible to fix and/or enable workarounds for the
wide-ranging classes of issues and bugs that users have been seeing. Most importantly,
guidance and robustness in the case of network failures has been improved. However,
there is still a long way to go and VirutalBox's behavior can sometimes be erratic,
so we encourage you to file reports with as much detail as possible around issues you
are seeing.

Likewise, we are working towards integrating as much of the features and/or
workflow that users miss from boot2docker-cli into Docker Machine as possible.
For instance, in this release we have added support for passing additional
arguments when running a SSH command using Machine. This enables fun use cases
like forwarding ports over SSH using the -L flag.

Comprehensive List of Changes

  • General
    • Add --github-api-token for situations where users are getting rate limited
      by GitHub attempting to get the current boot2docker.iso version
    • Various enhancements around the Makefile and build toolchain (still an active WIP)
    • Disable SSH multiplex explicitly in commands run with the "External" client
    • Show "-" for "inactive" machines instead of nothing
    • Make daemon status detection more robust
  • Provisioners
    • New CoreOS, SUSE, and Arch Linux provisioners
    • Fixes around package installation / upgrade code on Debian and Ubuntu
  • CLI
    • Support for regular expression pattern matching and matching by names in ls --filter
    • --no-proxy flag for env (sets NO_PROXY in addition to other environment variables)
  • Drivers
    • openstack
      • --openstack-ip-version parameter
      • --openstack-active-timeout parameter
    • google
      • fix destructive behavior of start / stop
    • hyperv
      • fix issues with PowerShell
    • vmwarefusion
      • some issues with shared folders fixed
      • --vmwarefusion-configdrive-url option for configuration via cloud-init
    • amazonec2
      • --amazonec2-use-private-address option to use private networking
    • virtualbox
      • Enhancements around robustness of the created host-only network
      • Fix IPv6 network mask prefix parsing
      • --virtualbox-no-share option to disable the automatic home directory mount
      • --virtualbox-hostonly-nictype and --virtualbox-hostonly-nicpromisc for controlling settings around the created hostonly NIC

Huge thanks to all our contributors!

Machine could not be what it is without the excellent contributions of the
community. Thanks to all the authors who contributed patches for this release:

  • Alexey Grachov
  • Brandon Conway
  • Bruno Renié
  • Chris Abernethy
  • Christian Mouttet
  • Chuck Sakoda
  • Dave Goehrig
  • Dave Henderson
  • David Arnold
  • David Gageot
  • David M.
  • David McKay
  • David Zerulla
  • Donovan Jimenez
  • Eric Sage
  • Evan Hazlett
  • Fabian Ruff
  • Fabio Rapposelli
  • Flavio Castelli
  • Gianpaolo Macario
  • Guillaume Giamarchi
  • Hironobu Saitoh
  • Ian Lee
  • Ivan Mikushin
  • Ivan Ryabchenko
  • Jean-Laurent de Morlhon
  • Jeremy White
  • Jon Mort
  • Kazuyuki SUZUKI
  • Kendrick Coleman
  • Kent Wang
  • Marcel Harkema
  • Martin Schygulla
  • Mary Anthony
  • Matt Bogosian
  • Matt McNaughton
  • Nathan LeClaire
  • Olivier Gambier
  • Palanivelrajan Balasubramanian
  • Paul Tagliamonte
  • Rodrigo Reis
  • Ron Williams
  • Soshi Katsuta
  • Stefan Scherer
  • Sven Dowideit
  • Todor Minchev
  • Vladimir Chernyshev
  • Xiaohui
  • Xiaohui Liu
  • feelobot
  • gdm85
  • jclagache
  • moxiegirl

If you have been unfairly left off the list, please let us know and we are happy
to add you.

Thanks as well to the many thoughtful users who have filed issues and worked
closely with us to debug errors. Please keep up the great work in the future!

Checksums

sha256 docker-machine_darwin-386.zip               0912d2f3450b9f30744accc328f894195e9048a345b890672a7010ba8974e0bd
md5 docker-machine_darwin-386.zip                  68ac418a6841642fabbe35fbe93d09e0
sha256 docker-machine_darwin-amd64.zip             75f18940c734425b3635c9485da148910dee6612cc677549563ba7662e3d36f6
md5 docker-machine_darwin-amd64.zip                4ab2e22180ad3cfcc967c7f30a3839c6
sha256 docker-machine_linux-386.zip                9c0563477ff6fc253973671f53f9da62bf3bf2377091244c75e4174166776d39
md5 docker-machine_linux-386.zip                   4bdef9525fad462177543ea0026368dc
sha256 docker-machine_linux-amd64.zip              e33b989421cf432882207dbf4ccb9fb3ca7e45176660d65f7bbd64f82fdf55f2
md5 docker-machine_linux-amd64.zip                 18bb34d556f52ce525d5a9cd52031804
sha256 docker-machine_windows-386.zip              383213419f4a8fc13e32f946f91370855c71bf84cc9f93b1d172462fd2c396a6
md5 docker-machine_windows-386.zip                 cc296a14870263c5bd5417b3b997f324
sha256 docker-machine_windows-amd64.zip            fd236a3fea82e240d5a5daaeee5c1ed29c6ac1805c98ce23f2281240c6815b51
md5 docker-machine_windows-amd64.zip               f23e4fa31a49c9ca969e909f6d5efd9f