diff --git a/CHANGELOG.md b/CHANGELOG.md index c00a62aab..013e757ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ BUG FIXES: - commands/package: Nice error if includes contain symlinks. [GH-3200] - commands/rsync-auto: Don't crash if the machine can't be communicated to. [GH-3419] + - guests/coreos: Docker provisioner works. [GH-3425] - guests/fedora: Fix hostname setting. [GH-3382] - guests/fedora: Support predictable network interface names for public/private networks. [GH-3207] diff --git a/plugins/guests/coreos/cap/docker.rb b/plugins/guests/coreos/cap/docker.rb new file mode 100644 index 000000000..8a78645bc --- /dev/null +++ b/plugins/guests/coreos/cap/docker.rb @@ -0,0 +1,11 @@ +module VagrantPlugins + module GuestCoreOS + module Cap + module Docker + def self.docker_daemon_running(machine) + machine.communicate.test("test -f /run/docker.sock") + end + end + end + end +end diff --git a/plugins/guests/coreos/plugin.rb b/plugins/guests/coreos/plugin.rb index cc5229e82..880f5bf4d 100644 --- a/plugins/guests/coreos/plugin.rb +++ b/plugins/guests/coreos/plugin.rb @@ -20,6 +20,11 @@ module VagrantPlugins require_relative "cap/configure_networks" Cap::ConfigureNetworks end + + guest_capability("coreos", "docker_daemon_running") do + require_relative "cap/docker" + Cap::Docker + end end end end diff --git a/plugins/providers/docker/action/host_machine.rb b/plugins/providers/docker/action/host_machine.rb new file mode 100644 index 000000000..646d6f97a --- /dev/null +++ b/plugins/providers/docker/action/host_machine.rb @@ -0,0 +1,17 @@ +module VagrantPlugins + module DockerProvider + module Action + # This action is responsible for creating the host machine if + # we need to. + class HostMachine + def initialize(app, env) + @app = app + end + + def call(env) + @app.call(env) + end + end + end + end +end diff --git a/plugins/provisioners/docker/cap/linux/docker_daemon_running.rb b/plugins/provisioners/docker/cap/linux/docker_daemon_running.rb new file mode 100644 index 000000000..58a2f5675 --- /dev/null +++ b/plugins/provisioners/docker/cap/linux/docker_daemon_running.rb @@ -0,0 +1,13 @@ +module VagrantPlugins + module Docker + module Cap + module Linux + module DockerDaemonRunning + def self.docker_daemon_running(machine) + machine.communicate.test("test -f /var/run/docker/pid") + end + end + end + end + end +end diff --git a/plugins/provisioners/docker/client.rb b/plugins/provisioners/docker/client.rb index 5feb3712b..c6afcfdb7 100644 --- a/plugins/provisioners/docker/client.rb +++ b/plugins/provisioners/docker/client.rb @@ -32,7 +32,7 @@ module VagrantPlugins end def daemon_running? - @machine.communicate.test('test -f /var/run/docker.pid') + @machine.guest.capability(:docker_daemon_running) end def run(containers) diff --git a/plugins/provisioners/docker/plugin.rb b/plugins/provisioners/docker/plugin.rb index 3c73279ac..5a4019de0 100644 --- a/plugins/provisioners/docker/plugin.rb +++ b/plugins/provisioners/docker/plugin.rb @@ -54,6 +54,11 @@ module VagrantPlugins Cap::Linux::DockerConfigureVagrantUser end + guest_capability("linux", "docker_daemon_running") do + require_relative "cap/linux/docker_daemon_running" + Cap::Linux::DockerDaemonRunning + end + provisioner(:docker) do require_relative "provisioner" Provisioner