hashicorp/vagrant · error · VagrantPlugins::DockerProvider::Errors::HostVMCommunicatorNotReady

The Docker provider was able to bring up the host VM success

Error message

The Docker provider was able to bring up the host VM successfully
but the host VM is still reporting that SSH is unavailable. This
sometimes happens with certain providers due to bugs in the
underlying hypervisor, and can be fixed with a `vagrant reload`.
The ID for the host VM is shown below for convenience.

If this does not fix it, please verify that the host VM provider
is functional and properly configured.

Host VM ID: %{id}

What it means

When the Docker provider runs containers inside a host VM (vagrant_vagrantfile/vagrant_machine configured, or the default where no local daemon exists), it brings the host VM up via action(:up) and then requires host_machine.communicate.ready?. If SSH on the host VM is still not reachable after the up action, HostVMCommunicatorNotReady is raised with the host VM ID - the provider blames hypervisor-level boot/SSH problems, not user config.

Source

Thrown at plugins/providers/docker/action/host_machine.rb:67

          # Reload the machine so that if it was created while we didn't
          # hold the lock, we'll see the updated state.
          host_machine.reload

          # See if the machine is ready already. If not, start it.
          if host_machine.communicate.ready?
            env[:machine].ui.detail(I18n.t("docker_provider.host_machine_ready"))
          else
            env[:machine].ui.detail(
              I18n.t("docker_provider.host_machine_starting"))
            env[:machine].ui.detail(" ")
            host_machine.with_ui(proxy_ui) do
              host_machine.action(:up)
            end

            # Verify communication is ready. If not, we have a problem.
            if !host_machine.communicate.ready?
              raise Errors::HostVMCommunicatorNotReady,
                id: host_machine.id
            end
          end
        end
      end
    end
  end
end

View on GitHub (pinned to 35f3160f4a)

Solutions

  1. Run `vagrant reload` - the error message names this as the usual fix for hypervisor boot bugs
  2. Open the host VM console in its provider GUI (VirtualBox/Hyper-V) and confirm it actually boots to sshd
  3. Update the host VM box (`vagrant box update`) or pin a known-good version
  4. Free host CPU/RAM so the host VM is not starved during boot
Defensive patterns

Strategy: retry

Validate before calling

# preflight: host VM must be up and docker reachable before starting containers
vagrant status | grep -q running || vagrant up
docker info >/dev/null 2>&1 || echo 'docker unreachable - check host VM SSH'

Try / catch

begin
  machine.action(:up)
rescue VagrantPlugins::DockerProvider::Errors::HostVMCommunicatorNotReady
  # one bounded retry: reload restarts the host VM's SSH path
  machine.provider.host_vm.action(:reload)
  machine.action(:up)
end

Prevention

When it happens

Trigger: Docker provider with a host VM where the backing hypervisor reports the machine up but guest SSH never becomes ready during the action: slow boot, broken guest additions/agent, or an SSH credential change in the host VM box.

Common situations: Slow or resource-starved hosts; outdated host VM boxes; hypervisor bugs (the error text itself recommends `vagrant reload`); host firewall/VPN blocking the SSH port.

Related errors


AI-assisted analysis of hashicorp/vagrant@35f3160f4a (2026-08-21). Data as JSON: /api/errors/393b536a005cc9b6. Report an issue: GitHub.