Fatal Error Incompatible CPU detected

Expected behavior

Be able to run Docker for Mac when double clicking the Docker.app

Actual behavior

Message at startup:

“Fatal Error
Incompatible CPU detected.
Docker requires a processor with virtualization capabilities.
To learn more about this issue see:
https://beta.docker.com/docs/mac/troubleshoot

Information

Docs say that “Mac must be a 2010 or newer model, with Intel’s hardware support for memory management unit (MMU) virtualization; i.e., Extended Page Tables (EPT)”. I don’t know whether my CPU provides that (or not).

  • output of sysctl -a | grep machdep.cpu.feature
    machdep.cpu.feature_bits: 43034875446164479
    machdep.cpu.features: FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 DTES64 MON DSCPL VMX SMX EST TM2 SSSE3 CX16 TPR PDCM SSE4.1 SSE4.2 POPCNT

  • System information:
    OS X 10.11.4 (15E65)
    Darwin 15.4.0
    iMac (27-inch, medio 2010)
    Processor: 2,8 GHz Intel Core i5
    Memory: 12 GB 1333 MHz DDR3
    Boot ROM: IM112.0057.B03

  • output docker version:
    Client:
    Version: 1.10.3
    API version: 1.22
    Go version: go1.5.3
    Git commit: 20f81dd
    Built: Thu Mar 10 21:49:11 2016
    OS/Arch: darwin/amd64

Steps to reproduce the behavior

  • Start the Docker.app from Applications folder.
1 Like

I am also having the same error - I have a:
Mac Pro (Mid 2010)
2.8 Ghz Quad-core Intel Xeon
7gb memory
machdep.cpu.max_basic: 11
machdep.cpu.max_ext: 2147483656
machdep.cpu.vendor: GenuineIntel
machdep.cpu.brand_string: Intel® Xeon® CPU W3530 @ 2.80GHz
machdep.cpu.family: 6
machdep.cpu.model: 26
machdep.cpu.extmodel: 1
machdep.cpu.extfamily: 0
machdep.cpu.stepping: 5
machdep.cpu.feature_bits: 44160500475100159
machdep.cpu.extfeature_bits: 4967106816
machdep.cpu.signature: 67237
machdep.cpu.brand: 0
machdep.cpu.features: FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 DTES64 MON DSCPL VMX EST TM2 SSSE3 CX16 TPR PDCM SSE4.1 SSE4.2 POPCNT
machdep.cpu.extfeatures: SYSCALL XD EM64T LAHF RDTSCP TSCI

It has “VMX” listed in the features and my firmware is up to date. so it should work?

I have this problem too.
My MacBook Pro (13-inch, Mid 2010):
$ sysctl -a | grep machdep.cpu.feature
machdep.cpu.feature_bits: 290732854951541759
machdep.cpu.features: FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 DTES64 MON DSCPL VMX SMX EST TM2 SSSE3 CX16 TPR PDCM SSE4.1 XSAVE

The Getting Started document describes the following prerequisites:

- Mac must be a 2010 or newer model, with Intel’s hardware support for memory management unit (MMU) virtualization; i.e., Extended Page Tables (EPT)

I’ve done some research on the MMU and EPT part. From https://en.wikipedia.org/wiki/X86_virtualization I found out that EPT is part of VT-x. MMU is part of VT-d. In short, that means the CPU should support both VT-x and VT-d.

Since the requirement described “Mac must be a 2010 or newer model…” I made the assumption I was safe. Either way, I was able to look up more information about the CPU in my iMac. Using the sysctl command gives you information about the model number of the CPU, in my case an Intel Core i5-760 Processor.

$ sysctl -n machdep.cpu.brand_string
Intel(R) Core(TM) i5 CPU         760  @ 2.80GHz

This model information can be used on the Intel Ark website to look up specific details of the processor. For example: http://ark.intel.com/products/48496/Intel-Core-i5-760-Processor-8M-Cache-2_80-GHz. If you’ve got another CPU, go to ark.intel.com and use the search box to enter your model.

On the details page, I noticed under the “Advanced Technologies” part my CPU does support VT-x but doesn’t support VT-d.

So that would be explaining why Docker for Mac won’t run on my iMac. Raises the question: can someone from the Docker team confirm this, and, will it stay impossible (for this specific hardware) to run Docker for Mac?

Same here:

Mid 2010 MB Pro

➜ ~ sysctl -a | grep machdep.cpu.feature
machdep.cpu.feature_bits: 290732854951541759
machdep.cpu.features: FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 DTES64 MON DSCPL VMX SMX EST TM2 SSSE3 CX16 TPR PDCM SSE4.1 XSAVE

Hello,

I am sorry if the documentation isn’t more complete regarding this matter.

On OS X, the way of knowing if your CPU complies with all the Hypervisor.framework requirements is by checking the value of the sysctl kern.hv_support key.

$ sysctl kern.hv_support
kern.hv_support: 1

If it is 1, then your CPU is supported.
If it is 0, it means the Hypervisor.framework cannot be used with your CPU, for a reason or another.

1 Like

Wouldn’t it be more friendly to check for this during installation and take
the appropriate action?

What do you mean by “during installation”? There isn’t any “installer” for Docker for Mac, the app bundle is just copied to the “Applications” directory.
What would you suggest as “appropriate action”? We are already showing a message explaining the the CPU doesn’t meet all the requirements.

Thanks for the update on the “Hypervisor.framework”. That option outputs “0” for me…

It could be helpful to know why and on which requirement the CPU failed. Simply checking and knowing “something” is wrong isn’t helpful. The guide wasn’t really unclear on the features to support, but it was on the part how to check em yourself. Where does this Hypervisor.framework come from? What does it do? Where does it check on? Bringing this in makes it more fuzzy for me to be honest. Is this in fact the value that is being checked by Docker?

I know that xhyve is being used by Docker and that it is based on top of the Hypervisor.framework. Does this mean that the message should actually be that xhyve is not supported on my system, or my CPU (which might be the underlaying case…). By the way, as a side-note, I am able to install xhyve with Homebrew myself. Not sure whether this installation should or should not check this variable from sysctl. Have not looked at how to use it from CLI after installing.

I also agree with @rkazak that it would be nice to know upfront that it is not going to work. The current version of the beta does not allow that. An installer as we have seen with Docker Toolbox could check this upfront. But while in beta I wouldn’t care so much (yet).

Also the “appropriate action” during installation would be obvious: don’t install if not supported… The message indeed tells us that the CPU doesn’t meet requirements, but not why and what. It would be nice to get more technical information on that end.

I would like to see this ‘installed’ under the control of toolbox, then
sensible actions can be taken. If the host can support both VBox and
xhyve then both can be offered else VBox only… Simple things to make the
user experience enjoyable/easy.

Thanks for giving more feedback.

Checking the CPU compatibility is the first thing the Docker application does when it starts,
it cannot be done earlier. We won’t distribute an installer as it is not technically needed and
we consider an application bundle the best way (OS X native) of distributing an OS X application.
We will try to make the hardware requirements as clear as possible on our website.

@joggienl from my understanding, your installation of xhyve shouldn’t be working if you have kern.hv_support: 0
We will see if we can improve the wording of the message though.

@rkazak I am sorry, we won’t. We are trying to get rid of VBox because it is source of issues for many users and has limitations. If your Mac is too old, you can always use Docker Toolbox, and if it is recent enough, you have the choice between Docker Toolbox and the new Docker for Mac… (they can even be both installed at the same time if VBox version is >= 4.3.30)

Thanks to everyone for the responses. I have a problem similar to others.

I have a mid-2010, 27" iMac (iMac 11,3) running El Capitan (10.11.5). The CPU is a 2.8 GHz Core i5 (model 760). According to the Intel documentation, http://ark.intel.com/products/48496/Intel-Core-i5-760-Processor-8M-Cache-2_80-GHz
the Core i5-760 appears to have the correct virtualization support:

Intel® Virtualization Technology (VT-x) ‡ Yes
Intel® Virtualization Technology for Directed I/O (VT-d) ‡ No
Intel® VT-x with Extended Page Tables (EPT) ‡ Yes

When I run the command at the terminal, sysctl kern.hv_support, I get a result of 0

It would be really helpful to know if this is because the CPU needs to support more than just VTx and EPT. If it does, it would be helpful to list this in the system requirements for Docker for OS-X.

Does the CPU need to support VT-d? Or is there perhaps a BIOS setting that is causing the problem?

Thanks for your message.

Once again, Docker for Mac is using Apple’s Hypervisor Framework and hence has the same requirements.

Here is what Apple’s documentation says:

Supported Hardware

Generally, machines with an Intel VT-x feature set that includes Extended Page Tables (EPT) and Unrestricted Mode are supported. You can determine the availability of Hypervisor APIs on a particular machine at runtime with the sysctl(8) command, passing kern.hv_support as an argument.

link: Hypervisor | Apple Developer Documentation

It’s all we have. Docker has obviously no control upon what CPU is supported by the Hypervisor Framework.

My CPU supports all virtualization, including EPT, VT-d and VT-x:

The problem is that the BIOS setting is set by default to ‘0’ or ‘disabled’ instead of ‘1’ or ‘enabled’

There is a HUGE user group that this is affecting but most have no idea how to check so it doesn’t get reported - millions of laptops/desktops sold over many years are experiencing this.

There has to be a way to change the BIOS setting from 0 to 1 - the solution is so silly simple but i have not been able to find the solution. Docker please help!!!

1 Like

i’ve same issue . i have CPU support VT-X this diagnostic:
Docker for Mac: version: mac-v1.12.0.1
OS X: version 10.10.5 (build: 14F1909)
logs: /tmp/ECED08AB-D009-4ACC-8AD3-DB1ACB37B666/20160821-195038.tar.gz
failure: com.docker.slirp is not running
[ERROR] docker-cli
cannot find docker
docker-cli check failed with: Failure(“docker -v: timeout after 10.00s”)
[OK] app
[OK] moby-syslog
[ERROR] disk
disk check failed with: Failure(“exec: /Applications/Docker.app/Contents/Resources/bin/…/…/…/Contents/MacOS/qemu-img check /Users/jsonli/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2 > /tmp/ECED08AB-D009-4ACC-8AD3-DB1ACB37B666/20160821-195038/qemu-img-check.stdout 2> /tmp/ECED08AB-D009-4ACC-8AD3-DB1ACB37B666/20160821-195038/qemu-img-check.stderr: exit 1”)
[OK] virtualization
[OK] system
[OK] menubar
[ERROR] osxfs
com.docker.osxfs is not running
[ERROR] db
/Users/jsonli/Library/Containers/com.docker.docker/Data/s40 does not exist
Unexpected error (No such file or directory) connecting to /Users/jsonli/Library/Containers/com.docker.docker/Data/s40
com.docker.db is not running
[ERROR] slirp
/Users/jsonli/Library/Containers/com.docker.docker/Data/s51 does not exist
Unexpected error (No such file or directory) connecting to /Users/jsonli/Library/Containers/com.docker.docker/Data/s51
com.docker.slirp is not running
[OK] moby-console
[OK] logs
[ERROR] vmnetd
/var/tmp/com.docker.vmnetd.socket does not exist
Unexpected error (No such file or directory) connecting to /var/tmp/com.docker.vmnetd.socket
/private/tmp/vmnetd/com.docker.vmnetd is not running
[OK] env
[ERROR] moby
/Users/jsonli/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/console-ring does not exist
[ERROR] driver.amd64-linux
Docker.app/Contents/MacOS/com.docker.driver.amd64-linux -db is not running

I can clearly see that the cpu support is a matter of Apple and not Docker in this case, but I would anyway recommend to the Docker team to review their statement in the docs about “Mac must be a 2010 or newer model,” because it looks like that no cpu model of both first and second half of 2010 will work with Apple Hypervisor and then Docker. Maybe Docker documentation should say something like “Mac must be a 2011 or newer model”.

1 Like

Docker Toolbox is the way to get docker running on these legacy macs.
It is mentioned in some comments above – just adding this here to make it clear.

okay, but mine says 1. yet, Docker won’t run