Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Docker for Windows not working

Tags:

docker

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

like image 639
Gowtham Avatar asked Aug 17 '15 10:08

Gowtham


People also ask

Why is Docker not working Windows 10?

If you do not run a 64-bit version of Windows Windows 10 Pro, Enterprise, or Education; 1511 November update, Build 10586 or later, you cannot run Docker for Windows. You can install Docker Toolbox if you have a 64-bit version of Windows 7 or later. Alternately, you do have the option to upgrade.

Does Docker on Windows work?

You can run both Linux and Windows programs and executables in Docker containers. The Docker platform runs natively on Linux (on x86-64, ARM and many other CPU architectures) and on Windows (x86-64). Docker Inc. builds products that let you build and run containers on Linux, Windows and macOS.


2 Answers

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)

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 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)

like image 61
SimSimY Avatar answered Sep 18 '22 05:09

SimSimY


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.

like image 26
James C Avatar answered Sep 19 '22 05:09

James C