Getting Docker to run on my aging PC

Ol’ Telly

When I bought this PC in 2013, it had everything I wanted: i7 processor, 16 Gb of RAM, SSD main drive, 2 Tb secondary drive, gaming video card, etc. But now, Ol’ Telly just ain’t what she used to be. Everything still works as it should, but some new products on the market don’t auto-magically work with the old hardware. This was the situation when I tried to use Android Studio a couple of years ago (the emulator wouldn’t work), and I discovered the same problem more recently when I tried to install Docker for Windows.

Ol’ Telly was originally built to run Windows 7 Professional. I allowed the free upgrade to Windows 10 Pro to proceed, back when I was struggling to get the Android Studio emulator to work. Android Studio uses something called “HAXM” for emulation, and HAXM depends on features of the Intel CPU.

Intel describes HAXM as:
…a hardware-assisted virtualization engine (hypervisor) that uses Intel® Virtualization Technology (Intel® VT) to speed up Android* app emulation on a host machine…

The Windows 10 upgrade didn’t fix the problem. The issue had something to do with my CPU and/or mainboard, but I couldn’t figure out where the failure was happening. At the time, I gave up in frustration. HAXM was never able to “enable” on my PC despite a lot of BIOS tweaking on my part.

Docker and my old motherboard

I installed Docker for Windows sometime in early 2017 after hearing that I might be using Docker for some project work. I recognized the warning signs right away, when Docker complained that it couldn’t enable virtualization. I immediately remembered my battle with HAXM and Android Studio. This time around, I was less worried about the worst-case scenario of trashing my motherboard, as it was now 4 years old.

I had done some research on my PC hardware, and found that my CPU (i7-3770K) was capable of Intel VT-x virtualization. Assuming that feature of the CPU was not defective somehow, and that seemed unlikely, then the next most likely culprit was the motherboard. Mine is a Gigabyte GA-Z77X-UD3H.

I had been through the BIOS settings before, several times, trying to enable the CPU virtualization back when I was messing with HAXM. This time I decided to be more aggressive and screw around with settings that didn’t seem relevant before. When the PC was original built and the BIOS was configured, it was running Windows 7 Pro. Maybe later versions of Windows need some other BIOS settings enabled in order to function? I changed a bunch of settings, based on half-assed Google research and hope, and somehow I discovered the magic combination that actually worked! I used my phone to take pictures of the relevant BIOS settings screens.

Right after I found settings that worked, I went back into the BIOS and created a saved profile in the “Save and Exit” screen. I didn’t think I would ever actually need this, since I had no plan to ever change these BIOS settings again. I was wrong. For some reason, every time a new release of Docker is available and I install it, my BIOS settings get changed and the Intel VT-x virtualization stops working again. Whenever this happens, I have to go back into the BIOS and reload my saved profile to get things working again. Weird and unexpected, but only a minor inconvenience.

When the BIOS settings are set properly, I want to see “Virtualization: Enabled” inside the Windows 10 Pro Task Manager window.

Task Manager screenshot - resized

Virtualization is enabled – so now what?

Now you should be able to install and run Docker for Windows. I’m not going to discuss the steps to install Docker for Windows, because the Docker site already explains those steps very clearly. I’ll just leave you with some screenshots of what you should see after Docker has been installed and started up successfully.

This should appear in your system tray (the tooltip is visible because I was hovering over the Docker icon):

Docker is running

You can right-click on the Docker icon in the system tray to change some basic settings:

Docker right-click

I had to enable the setting that I’ve highlighted in the screenshot below in order to get a Maven plug-in to work in a Java tutorial. I did read the warning. It’s up to you if you want to enable that non-standard setting or not.

Docker-exposing port 2375

Docker is working – so NOW what?

Now go find a Docker tutorial that interests you!

Depending on the content of the tutorial, you may need to have a “Docker Hub” account. The account is free, but you need to register.


Leave a Reply