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

时间:2016-09-20 18:08:30

标签: docker docker-compose

我有一个利用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's repository]上找到了相当于docker.sock的{​​{1}}(https://github.com/docker/docker/search?utf8=%E2%9C%93&q=DefaultDockerHost )但我仍然不知道如何使用以下方式映射音量:

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

2 个答案:

答案 0 :(得分:2)

您是否正在尝试在Windows主机上运行 Windows 容器(而不是通过Moby VM在Windows主机上运行Linux容器)? 在这种情况下,您无法将命名管道(npipe:////./pipe/docker_engine)共享为docker volume。

似乎唯一的选择是使用 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即可。这将意味着在启动嵌套容器时会有更多的网络流量,因为它需要访问DNS以将其解析为IP地址,该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

答案 1 :(得分:0)

第一个/var/run/docker.sock引用boot2docker虚拟机中的相同路径。 Correcly写/var/run/docker.sock

相关问题