什么是Windows 10上的docker.sock等价物?

我有一个应用程序,利用docker客户端连接到docker守护进程。 我从一个容器内运行这个应用程序。 为此,我使用以下命令在Ubuntu和MacOS上运行我的容器:

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

最近,在我的Windows机器上,我安装了Docker for Windows ,没有

 /var/run/docker.sock 

文件。 我无法弄清楚什么是Windows上的docker.sock文件。

更新:我在[ docker.sock 's repository]( https://github.com/docker/docker/search?utf8=%E2%9C%93&q=DefaultDockerHost )上的Windows上find了一个等效的docker.sock ,但是我仍然不知道如何使用以下方式映射卷:

 npipe:////./pipe/docker_engine** path 

你是否试图在Windows主机上运行Windows容器(而不是通过Moby VM在Windows主机上运行Linux容器)? 在这种情况下,你不能共享命名pipe道(npipe:////./pipe/docker_engine)作为docker卷。

看来唯一的select是使用TCP套接字。 以下是我在PowerShell中完成的操作:

 # Open firewall # TODO: allow access only from internal nat-ed containers netsh advfirewall firewall add rule name="Docker daemon " dir=in action=allow protocol=TCP localport=2375 # Find gateway ip address for internal docker nat network, set DOCKER_HOST based on it $gatewayIpAddress = (docker network inspect nat | ConvertFrom-Json).IPAM.Config[0].Gateway $dockerHost = "tcp://${gatewayIpAddress}:2375" $Env:DOCKER_HOST = $dockerHost [Environment]::SetEnvironmentVariable("DOCKER_HOST", $dockerHost, "Machine") # Reconfigure docker daemon to use TCP '{ "hosts": ["' + $dockerHost + '"] }' | Set-Content 'C:\ProgramData\docker\config\daemon.json' Restart-Service docker # Smoke Test docker version 

潜在你可以用简单的方法逃避,而不是找出上面的网关IP,只需使用COMPUTERNAME。 这意味着当启动嵌套容器时需要更多的networkingstream量,因为它需要访问DNS来将其parsing为通常为主机的主IP地址的IP地址,而不是docker NAT网关IP。 由于Docker守护进程将监听主机的外部IP,因此它的安全性会降低,因此可以从外部访问。

然后你可以启动一个容器,只需传递env var DOCKER_HOST:

 docker run -it -e DOCKER_HOST ... 

以上是基于: https : //docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/deploy-containers-on-nano#manage-docker-on-nano-server

第一个/var/run/docker.sock引用您的boot2docker虚拟机中的相同path。 正确地写/var/run/docker.sock