{"record":{"id":"6c707386715b7ff2","repo":"hashicorp/vagrant","slug":"the-docker-synced-folder-type-can-t-be-used-beca","errorCode":null,"errorMessage":"The \"docker\" synced folder type can't be used because the  provider\nin use is not Docker. This synced folder type only works with the\nDocker provider. The provider this machine is using is: %{provider}","messagePattern":"The \"docker\" synced folder type can't be used because the  provider\nin use is not Docker\\. This synced folder type only works with the\nDocker provider\\. The provider this machine is using is: %(.+?)","errorType":"exception","errorClass":"VagrantPlugins::DockerProvider::Errors::SyncedFolderNonDocker","httpStatus":null,"severity":"error","filePath":"plugins/providers/docker/synced_folder.rb","lineNumber":11,"sourceCode":"# Copyright IBM Corp. 2010, 2025\n# SPDX-License-Identifier: BUSL-1.1\n\nmodule VagrantPlugins\n  module DockerProvider\n    class SyncedFolder < Vagrant.plugin(\"2\", :synced_folder)\n      def usable?(machine, raise_error=false)\n        # These synced folders only work if the provider is Docker\n        if machine.provider_name != :docker\n          if raise_error\n            raise Errors::SyncedFolderNonDocker,\n              provider: machine.provider_name.to_s\n          end\n\n          return false\n        end\n\n        true\n      end\n\n      def prepare(machine, folders, _opts)\n        folders.each do |id, data|\n          next if data[:ignore]\n\n          host_path  = data[:hostpath]\n          guest_path = data[:guestpath]\n          # Append consistency option if it exists, otherwise let it nil out\n          consistency = data[:docker_consistency]\n          consistency &&= \":\" + consistency","sourceCodeStart":1,"sourceCodeEnd":29,"githubUrl":"https://github.com/hashicorp/vagrant/blob/35f3160f4ad6edc3a9f3aa9570adfc1a4d73aaa5/plugins/providers/docker/synced_folder.rb#L1-L29","documentation":"The docker synced folder implementation gates on the machine's provider: usable? returns false (or raises SyncedFolderNonDocker when Vagrant performs a strict check, i.e. the type was pinned explicitly with type: \"docker\") whenever machine.provider_name is not :docker. The message names the offending provider.","triggerScenarios":"config.vm.synced_folder \"src\", \"/src\", type: \"docker\" on a machine whose provider is virtualbox, hyperv, vmware, etc. - the strict check fires because the type was forced instead of letting Vagrant choose per provider.","commonSituations":"One Vagrantfile shared across providers; a Docker-machine config copied onto other machines; a shared default that pins one folder type for all machines.","solutions":["Remove type: \"docker\" and let the active provider pick its own synced folder implementation","Use a portable type (rsync, nfs) in shared configs","Scope docker-typed folders to machines that actually use the docker provider"],"exampleFix":"# before\nconfig.vm.synced_folder \".\", \"/vagrant\", type: \"docker\"\n\n# after\nconfig.vm.synced_folder \".\", \"/vagrant\", type: \"rsync\"\n# or omit type and let the provider default apply","handlingStrategy":"type-guard","validationCode":null,"typeGuard":"def docker_synced_folder_applicable?(machine)\n  machine.provider_name == :docker\nend\n\n# usage\nif docker_synced_folder_applicable?(machine)\n  machine.config.vm.synced_folder \".\", \"/vagrant\", type: \"docker\"\nend","tryCatchPattern":null,"preventionTips":["Use provider-conditional blocks when sharing Vagrantfiles across providers","Prefer omitting type: and letting each provider pick its implementation","Reserve type: \"docker\" for machines pinned to the docker provider via FORCE or provider overrides"],"tags":["vagrant","docker","synced-folders","provider","config"],"backgroundTag":"provider-mismatch","analyzedSha":"35f3160f4ad6edc3a9f3aa9570adfc1a4d73aaa5","analyzedAt":"2026-08-21T13:34:32.514Z","schemaVersion":2},"datasetVersion":"2026-08-21T18:17:14.833Z"}