Docker for Windows not working

Docker

Docker Problem Overview


I've installed Docker toolbox now and I get the error for everything:

Get http://127.0.0.1:2375/v1.20/version: dial tcp 127.0.0.1:2375: ConnectExtcp: No connection could be made because the target machine actively refused it..
* Are you trying to connect to a TLS-enabled daemon without TLS?
* Is your docker daemon up and running?

docker version output:

Client:
 Version:      1.8.1
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   d12ea79
 Built:        Thu Aug 13 02:49:29 UTC 2015
 OS/Arch:      windows/amd64
Get http://127.0.0.1:2375/v1.20/version: dial tcp 127.0.0.1:2375: ConnectEx tcp: No connection could be made because the target machine actively refused it..
* Are you trying to connect to a TLS-enabled daemon without TLS?
* Is your docker daemon up and running?

But the VM is running under VirtualBox. I have searched everywhere but can't find a solution.

UPDATE1: I'm using Windows 8.1 and also tried to start through Kinematic also.

UPDATE2: Everything worked like charm when I tried Virtualbox Test Build 5.0.3 or later. You can download here: https://www.virtualbox.org/wiki/Testbuilds

Docker Solutions


Solution 1 - Docker

Just run:

"C:\Program Files\Docker Toolbox\docker-machine" ls

get the machine name, and then run:

"C:\Program Files\Docker Toolbox\docker-machine" env <MACHINE_NAME_HERE> --shell=[cmd|powershell]

and you should get something like this:

"C:\Program Files\Docker Toolbox\docker-machine" env default --shell=cmd
set DOCKER_TLS_VERIFY=1
set DOCKER_HOST=tcp://192.X.X.X:2376
set DOCKER_CERT_PATH=C:\Users\X\.docker\machine\machines\default
set DOCKER_MACHINE_NAME=default
# Run this command to configure your shell:
# copy and paste the above values into your command prompt

I also get an error open C:\Users\X\.docker\machine\machines\default\server.pem: The system cannot find the file specified. and solved it by upgrading my VirtualBox to version 5.0.3 (from their [nightly builds][1])

Long version:

I got the same problem and after and the "Using Docker from Windows Command Line Prompt (cmd.exe)" section from the [installation manual][2] put me in the right direction

Basically, the way docker works is that the "docker " commands are passed to a docker service (running on port 2375). As you are running the docker from windows host, the service actually runs on the linux host created by docker (you can see it by opening the virtualbox ui).

The usual flow is the following:

  1. default machine is created
  2. the starter (kinamatic / "Docker Quickstart Terminal" / cmd) of the machine waits for the machine to boot, gets it's IP address and sets the linux ip:port as the service address (instead of 127.0.0.1:2375) in few enviremnt/powershell variables
  3. from this point all docker ... commands are send to the linux host and everything works almost as native linux

The problem is that there is some issue with the machine setup (my guess the new virtual box but I am not sure and have the time to dig into it). You can see that by runnung the ls command and notice that (at least in my case) the state of the machine is "timeout" and there is no url, unlike the output shown in the manual.

This causes the enviorment values not to be set and the docker ... commands to fail.

Apart from running the command, you can also start the Docker Quickstart Terminal that does the same thing but with sh shell

Regarding the certificate error, I tried to regenrate the certificates from within the virtual machine using:

/usr/local/bin/generate_cert --overwrite --host=default,127.0.0.1,10.0.2.15,192.168.99.100 --ca=/var/lib/boot2docker/tls/ca.pem --ca-key=/var/lib/boot2docker/tls/cakey.pem --cert=/var/lib/boot2docker/tls/server.pem --key=/var/lib/boot2docker/tls/serverkey.pem

I got "protocol error"s when tried to copy the certificate to the host machine, which reminded me an old virtualbox shared folders bug, so this may not be a problem with docker but with virtualbox - I upgraded to the latest nightly version (5.0.3-102224), regenerated the default image and that seems to solve it. As windows 10 is not officially supported yet neither by docker nor by virtualbox, I am not sure if this is the same thing that causes you to get the certificate error, In any case can try to copy the certificates from the virtual machine (you have the paths in code block) to your local user directory (it is mapped to /c/Users/X/ in the virtual machine) [1]: https://www.virtualbox.org/wiki/Testbuilds [2]: https://docs.docker.com/installation/windows/

Solution 2 - Docker

The following worked for me (Docker Toolbox 1.8.1b and Windows 7). It is a simplified version of what @baptiste-gaillard outlined in the comments above. Short answer: Use VirtualBox 5.03 or later from the get-go.

  1. Download VirtualBox 5.03 (nightly build at the time of this post) and extension pack.
  2. Reboot laptop. (Clears out running VirtualBox stuff.)
  3. Install VirtualBox 5.03 and extension pack 5.03.
  4. Delete the default VM entirely (remove files).
  5. Re-run Docker Quickstart Terminal shortcut to generate the default VM.

The Quickstart script seems to get along better with VirtualBox 5.03 with regards to creating the requisite TLS keys.

Solution 3 - Docker

Had the same issue as you showed and Just fixed it a few hours ago.

All need to do is disable Hyper-V. Run a command prompt with administrator rights and run the following command:

bcdedit /set hypervisorlaunchtype off

Restart your PC, open virtualbox and delete default vm after relaunch, go back to docker quickstart terminal and put the following in command:

docker run hello-world

and you're done! Hope it solves your problem

Solution 4 - Docker

this works for me

  1. start the command line tool first and get the machine ip address by running

docker-machine ls command

  1. Re-generate certs docker-machine regenerate-certs

  2. Set the evn variables manually in my case the location of certs was different

set DOCKER_TLS_VERIFY=1

set DOCKER_HOST=tcp://machine_IP:2376

set DOCKER_CERT_PATH=C:\Users\X.docker\machine\certs

set DOCKER_MACHINE_NAME=default

Now run docker version

Here is the output in my case

Client: Version: 1.8.1 API version: 1.20 Go version: go1.4.2 Git commit: d12ea79 Built: Thu Aug 13 02:49:29 UTC 2015 OS/Arch: windows/amd64

Server: Version: 1.8.1 API version: 1.20 Go version: go1.4.2 Git commit: d12ea79 Built: Thu Aug 13 02:49:29 UTC 2015 OS/Arch: linux/amd64

Solution 5 - Docker

The Docker Toolbox (in 1.8.x) installation configure by default your Docker Daemon to use secure connection via the TLS protocol (version 1.8).

If you were using an older version of the daemon that wasn't secured that means at least two things :

  • the port number changed from 2375 to 2376
  • your daemon client need to present a certificat to communicate with you docker engine/server.

So the reply of sandiindia indicates the environment variables that precise to the docker client the good configuration to connect to the docker server/engine:

#You're using a TLS secured daemon : 
set DOCKER_TLS_VERIFY=1

# Precise the Docker Host IP and port, the TLS default is 2376
set DOCKER_HOST=tcp://*<docker_host_IP>*:2376

# The paths to the certificate and client key needed to authenticate to the daemon
# You should have 3 files in this directory : ca.pem, cert.pem and key.pem 
# In my case the default path looks like : 
set DOCKER_CERT_PATH=C:\Users\*<username>*\.docker\machine\machines\default

#the name of your Docker Host VM : 
set DOCKER_MACHINE_NAME=default

The docker documentation about TLS configuration : https://docs.docker.com/articles/https/

I hope it helps ;)

Solution 6 - Docker

Close the virtual machine from Virtual Box (you don't have to delete it)
Close Kitematic
Close Docker Quickstart Terminal

Now do this in-order:

Open Kitematic
Open Docker Quickstart Terminal

Its important not to open Docker Quickstart Terminal before Kitematic, as Kitematic will initialize things for Docker Quickstart Terminal

I didn't need to execute any command line..

I hope this will help some body..

Solution 7 - Docker

I too had the same problem, but I was able to solve it without having to type anything on the command line, it just worked out of the box.

It turns out a few initialization steps were missing, as pointed out in the accepted answer above. Why wasn't the default Docker installation already doing this? I also had missing certs. So, I uninstalled everything and restarted from scratch. However, after the installation completed, this time around do not open the Docker Quick Start terminal first, open Kitematic instead to do the first initialization for you.

Kitematic created the certs for me, set the missing env variables and then I opened the Docker Quick Start terminal. I typed docker run hello-world, then docker version and this time it worked as expected, no error messages.

Note that this didn't work when I opened the Quick Start terminal first.

I'm testing Docker inside VMWare 10 instances and I was able to duplicate this problem and its solution (workaround) in every case.

I hope this helps.

Solution 8 - Docker

I fixed my issue by simply Removing the default VM in the VirtualBox manager, rebooting PC (just in case), and then re-running Docker Quickstart Terminal. That's it.

Docker 1.8.2 and Virtual Box 5.0.4

Solution 9 - Docker

  1. Update to the latest virtual box above 5.0.3
  2. Restart the system
  3. open virtual box and remove the default virtual machine
  4. open the docker quick start terminal
  5. run docker run hello-world

And you are done.

Solution 10 - Docker

Delete and remove all old v.machines on your laptop:

  1. Open VirtualBox, right click on 'default', Remove, 'Delete All files'.
  2. Command Prompt (Run as Admin)> docker-machine rm default

Uninstall Virtualbox, Docker toolbox and Git. Navigate to c:\Users\Vinita, and delete dirs. .docker and .Virtualbox CClean files and registry. Reboot.

Cleaning is done.

I. Download latest version of Docker tools for windows (1.10.2) from Docker Toolbox Right click on the downloaded file and 'Run as administrator' This will install - Docker Quickstart, Kitematic and Virtualbox.

II. Download latest test build of VirtualBox (5.01.15-105696-win.exe) from Testbuilds – Oracle VM VirtualBox . Run as Administrator again. (You can ignore any warnings and overwrite on the already Docker-installed VirtualBox).

So far, Nothing out of the ordinary. We just installed the software with Admin rights. Now, Control Panel>Network and Sharing Center>Change adapter settings: Right click VirtualBox Host-Only Network #2 for Properties. Check> VirtualBox NDIS6 Bridged Networking Driver. (If it is already checked, uncheck and check again.)

You are done. This is the only fix that we have employed!

Both Kitematic and Docker Quickstart should work now.

Right click on Kitematic and Run as admin the first time. Tested on Windows 10.

Solution 11 - Docker

I encountered exactly the same error when I run docker images after a system reboot. I used docker version 1.10 on Windows 7 64 bits with virtualbox 5.0.10 and mintty(the terminal come with Git for Windows)

Executing docker-machine ls showed me the virtual machine is in Timeout state. $ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default virtualbox Timeout So I restarted the virtual machine $ docker-machine restart default Then list the status again told me the cert is bound to an incorrect address:

$ docker-machine ls
Unable to query docker version: Get https://192.168.56.101:2376/v1.15/version: x509: certificate is valid for 192.168.99.101, not 192.168.56.101

Then I regenerate the cert $ docker-machine regenerate-certs default and finally $ eval $(docker-machine env default --shell=bash) Then docker is working again!

Solution 12 - Docker

With Docker 1.8.1d had the same problem, having uninstalled 1.8.1c. Eventually fixed problem by installing latest Virtual Box (5.0.18), rebooting when prompted and starting Kitematic. Kitematic fails at first and offers option to remove and re-install the VM which I did. After that my QuickStart Terminal was OK.

Solution 13 - Docker

It sounds like the problem with virtual box, In my case, I have performed below steps to resolve the issue

  • Stop Docker machine by 'docker-machine stop'
  • Open Network and sharing Center in Windows OS
  • Click on Change Adapter settings
  • Disable the VirtualBox-Host Only Network
  • Start Docker machine by 'docker-machine start'

Solution 14 - Docker

I had the same issue with Docker Toolbox on Windows 10 Home. The steps to fix the problem from here:

  1. run docker-machine ls to get a list, you should probably see this:
NAME      ACTIVE   DRIVER       STATE     URL   SWARM   DOCKER    ERRORS
default   -        virtualbox   Stopped                 Unknown
  1. Optional step upgrading (be patient):
docker-machine upgrade
  1. restart the default:
docker-machine start default

don't worry if says:

> Machine "default" is already running.

  1. now you should be able to run docker version and see something like:
Client:
 Version:           19.03.1
 API version:       1.40
 Go version:        go1.12.7
 Git commit:        74b1e89e8a
 Built:             Wed Jul 31 15:18:18 2019
 OS/Arch:           windows/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.5
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.12
  Git commit:       633a0ea838
  Built:            Wed Nov 13 07:28:45 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.10
  GitCommit:        b34a5c8af56e510852c35414db4c1f4fa6172339
 runc:
  Version:          1.0.0-rc8+dev
  GitCommit:        3e425f80a8c931f88e6d94a8c831b9d5aa481657
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

Solution 15 - Docker

This has happened a few times for me on Windows 10 with VirtualBox 5.0.14.

It seems to be related with not shutting down VirtualBox correctly (I believe) - for example, a power cut!

  1. Shutdown the Docker VM

  2. Close Kitematic

  3. Start the Docker Quickstart Terminal

  4. Type in the terminal:

> docker-machine.exe -D ls

  1. Start Kitematic. VM's show up now.

If that does not work, try 1-3 again and this time try to regenerate certs. Then do step 4.

One thing that is odd, is that in the terminal docker images does not list them but says it cannot connect to 127.0.0.1:2375 (but docker-machine ls shows the default machine running on 192.168.99.100:2376).

Solution 16 - Docker

Just recreate the default machine, and then run

docker-machine env default

It works for me.

Solution 17 - Docker

if you are using docker for windows(beta) follow this steps:

  • Disable the "DockerNAT" network adapter
  • Run the "Reset to factory defaults" via the taskbar / docker / settings / Reset to factory defaults"

Solution 18 - Docker

On my non-virtual machine, I got same error. Below steps worked for me

Right click docker->Under Settings->General do you have Expose daemon on tcp://localhost:2375 without TLS enabled? You need to if you want to access the daemon as described. But please do keep in mind that this setting is insecure as explained in the warning.

Solution 19 - Docker

My issue was "...error getting IP address" Thanks to all the people here who have contributed their solutions which I read through and performed these steps:

  1. Close Docker

  2. Open VirtualBox Manager

  3. Delete default VM

  4. Start Kitematic first (I think this is important)

  5. Start Docker

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionGowthamView Question on Stackoverflow
Solution 1 - DockerSimSimYView Answer on Stackoverflow
Solution 2 - DockerJames CView Answer on Stackoverflow
Solution 3 - DockerBlah blahView Answer on Stackoverflow
Solution 4 - DockersandiindiaView Answer on Stackoverflow
Solution 5 - DockervbeView Answer on Stackoverflow
Solution 6 - DockersimoView Answer on Stackoverflow
Solution 7 - DockerarnoldView Answer on Stackoverflow
Solution 8 - DockerGarrickView Answer on Stackoverflow
Solution 9 - DockerAbhishek ShringiView Answer on Stackoverflow
Solution 10 - DockerKRKView Answer on Stackoverflow
Solution 11 - DockerleonView Answer on Stackoverflow
Solution 12 - DockerStefan SieradzkiView Answer on Stackoverflow
Solution 13 - DockerNIrav ModiView Answer on Stackoverflow
Solution 14 - DockerFoad S. FarimaniView Answer on Stackoverflow
Solution 15 - DockerrmcsharryView Answer on Stackoverflow
Solution 16 - DockerNam NguyenView Answer on Stackoverflow
Solution 17 - DockerGomesView Answer on Stackoverflow
Solution 18 - Dockerharshal bhavsarView Answer on Stackoverflow
Solution 19 - DockerIsriyanti AkiraView Answer on Stackoverflow