Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fails to install without error if com.docker.vmnetd is disabled #3035

Closed
Zenexer opened this issue Jun 26, 2018 · 4 comments

Comments

@Zenexer
Copy link

commented Jun 26, 2018

It's possible for the launchd daemon com.docker.vmnetd to be in a disabled state even when it doesn't exist on the system. This persists after old versions of Docker are uninstalled. Resetting Docker to defaults or completely reinstalling won't fix the issue.

When this happens, Docker won't proceed past the prompt to install the networking service. It will prompt for credentials, but the dialog will not disappear. Pressing OK again prompts for the credentials again. There is no visible error, though the following will appear in Console.app:

Vmnetd: Cannot register new process: The operation couldn’t be completed. (CFErrorDomainLaunchd error 9.)

If the cause of this error is that com.docker.vmnetd is disabled, launchctl print-disabled system will output the following:

disabled services = {
	...
	"com.docker.vmnetd" => true
	...
}

If the value is false instead of true, or the entry is missing, the issue described here is not the cause of the error.

From Yosemite onward (at least as far as High Sierra), there is no direct way to completely restore this setting, such that the override entry is removed. The only way to do so appears to be an offline edit of system files, typically via Single User Mode:

  1. https://stackoverflow.com/questions/31206756/launchctl-remove-enabled-disabled-override
  2. https://discussions.apple.com/thread/1872008

Since that's not something that the installer or troubleshooter can easily attempt, the next-best solution is to change the disabled override flag to false, either via:

sudo launchctl load -w /Library/LaunchDaemons/com.docker.vmnetd.plist

or:

sudo launchctl enable system/com.docker.vmnetd

launchctl print-disabled system will then look like this:

disabled services = {
	...
	"com.docker.vmnetd" => false
	...
}

In my case, to get Docker running, I had to completely restart the installation process, which involved:

sudo launchctl enable system/com.docker.vmnetd
sudo rm -f /Library/LaunchDaemons/com.docker.vmnetd.plist /Library/PrivilegedHelperTools/com.docker.vmnetd
open -a Docker

I was then prompted to install the networking service again, which succeeded.

This issue is probably the cause of these reports:

  1. #61
  2. #107
  3. #644
  4. #853
  5. #866
  6. #899
  7. #903
  8. #1903
  9. ... and a lot more. I got tired of searching through all of them.

Several of these report may alternatively have been caused by lack of a writable /var/tmp/, which is already mentioned in several places.

@Zenexer Zenexer changed the title Docker for macOS fails to install without error if com.docker.vmnetd is disabled Fails to install without error if com.docker.vmnetd is disabled Jun 26, 2018

@djs55

This comment has been minimized.

Copy link
Contributor

commented Jun 27, 2018

@Zenexer wow, thanks for such a thorough report! I'll see what we can do to handle this error better -- although we can't automatically run sudo I'm sure we could do a much better job of detecting this error and telling the user how to fix it.

@djs55

This comment has been minimized.

Copy link
Contributor

commented Jun 27, 2018

The next version of edge and stable should detect this problem and prompt the user to fix it with

capture d ecran 2018-05-28 a 14 21 25

I'll suggest adding the sudo rm -f to the dialog to make it more robust. I've also suggested adding the launchctl print-disabled system to the diagnostics report.

Also related to #2934 and #2687

@djs55

This comment has been minimized.

Copy link
Contributor

commented Jun 28, 2018

The next version of edge and stable will have the sudo rm -f in the dialog too:

screen shot 2018-06-27 at 16 25 22

@Zenexer thanks again for your help!

@docker-desktop-robot

This comment has been minimized.

Copy link
Collaborator

commented Sep 26, 2018

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale comment.
Stale issues will be closed after an additional 30d of inactivity.

Prevent issues from auto-closing with an /lifecycle frozen comment.

If this issue is safe to close now please do so.

Send feedback to Docker Community Slack channels #docker-for-mac or #docker-for-windows.
/lifecycle stale

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants
You can’t perform that action at this time.