Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Bind to docker socket on Windows

Tags:

docker

On *nix systems, it is possible to bind-mount the docker socket from the host machine to the VM by doing something like this:

docker run -v /var/run/docker.sock:/var/run/docker.sock ...

Is there an equivalent way to do this when running docker on a windows host?


I tried various combinations like:

docker run -v tcp://127.0.0.1:2376:/var/run/docker.sock ...

docker run -v "tcp://127.0.0.1:2376":/var/run/docker.sock ...

docker run -v localhost:2376:/var/run/docker.sock ...

none of these have worked.

like image 441
Theolodus Avatar asked Apr 21 '16 09:04

Theolodus


People also ask

Where is Docker socket on Windows?

The Docker daemon listens to a socket at /var/run/docker. sock, responding to calls to the Docker API. If we want to be able to issue Docker commands from a container, we'll need to communicate with this socket.

How do I connect to a Docker container in Windows?

To switch to Windows containers in Docker, right-click the Docker icon, and select Switch to Windows containers. To use the command line to switch between containers, run & $Env:ProgramFiles\Docker\Docker\DockerCli.exe -SwitchDaemon .

How do I run Docker daemon on Windows?

To start Docker in daemon mode, choose Application > Start "Docker Daemon". The state should transition to "Running" after a few seconds and Docker Daemon should be accessible over the remote bridge. That's it! Next time your computer boots, Docker Daemon will start up immediately, before anyone logs on.


2 Answers

For Docker for Windows following seems to be working:

-v //var/run/docker.sock:/var/run/docker.sock

like image 140
Alexander Chichenin Avatar answered Sep 30 '22 20:09

Alexander Chichenin


As the Docker documentation states:

If you are using Docker Machine on Mac or Windows, your Engine daemon has only limited access to your OS X or Windows filesystem. Docker Machine tries to auto-share your /Users (OS X) or C:\Users (Windows) directory. So, you can mount files or directories on OS X using:

docker run -v /Users/<path>:/<container path> ... 

On Windows, mount directories using:

docker run -v /c/Users/<path>:/<container path> ... 

All other paths come from your virtual machine’s filesystem, so if you want to make some other host folder available for sharing, you need to do additional work. In the case of VirtualBox you need to make the host folder available as a shared folder in VirtualBox. Then, you can mount it using the Docker -v flag.

With all that being said, you can still use the:

docker run -v /var/run/docker.sock:/var/run/docker.sock ... 

The first /var/run/docker.sock refers to the same path in your boot2docker virtual machine.

For example, when I run my own Jenkins image using the following command in a Windows machine:

$ docker run -dP -v /var/run/docker.sock:/var/run/docker.sock alidehghanig/jenkins 

I can still talk to the Docker Daemon in the host machine using the typical docker commands. For example, when I run docker ps in the Jenkins container, I can see running containers in the host machine:

CONTAINER ID   IMAGE  COMMAND   CREATED  STATUS  PORTS        NAMES 65311731f446   jen... "/bi.."   10...    Up 10.. 0.0.0.0:..  jenkins 
like image 25
Ali Dehghani Avatar answered Sep 30 '22 18:09

Ali Dehghani