Windows 10上的docker.sock等价物是什么?
我有一个应用程序,它利用docker客户端连接到docker守护进程。我从一个容器中运行这个应用程序。为此,我在Ubuntu和MacOS上使用以下命令运行我的容器:Windows 10上的docker.sock等价物是什么?,docker,docker-compose,Docker,Docker Compose,我有一个应用程序,它利用docker客户端连接到docker守护进程。我从一个容器中运行这个应用程序。为此,我在Ubuntu和MacOS上使用以下命令运行我的容器: docker run -d -v /var/run/docker.sock:/var/run/docker.sock someimage 最近,我在我的Windows计算机上安装了,并且没有 /var/run/docker.sock 文件。我无法找出Windows上的docker.sock文件的等效项 更新:我在[docker'
docker run -d -v /var/run/docker.sock:/var/run/docker.sock someimage
最近,我在我的Windows计算机上安装了,并且没有
/var/run/docker.sock
文件。我无法找出Windows上的docker.sock
文件的等效项
更新:我在[docker's repository]上的Windows上找到了一个相当于docker.sock
(
)但我仍然不知道如何使用以下方法映射卷:
npipe:////./pipe/docker_engine** path
第一个/var/run/docker.sock引用boot2docker虚拟机中的同一路径。正确写入/var/run/docker.sock您是否试图在Windows主机上运行Windows容器(而不是通过Moby VM在Windows主机上运行Linux容器)? 在这种情况下,您不能共享命名管道(npipe:////./pipe/docker_engine)作为docker卷 似乎唯一的选择是使用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 ...
以上是基于:在windows上可能没有这样做的方法。Unix以将大多数事物表示为文件句柄而闻名,但windows可能不是。这才是真正的答案。谢谢!