2016-09-20 609 views
2

我有一個應用程序,利用碼頭客戶端連接到碼頭守護程序。我從一個容器中運行這個應用程序。爲此,我跑我的容器上都Ubuntu和MacOS的以下命令:什麼是Windows 10上的docker.sock等效物?

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在Windows上[碼頭工人的存儲庫(https://github.com/docker/docker/search?utf8=%E2%9C%93&q=DefaultDockerHost )等效的,但我仍然不知道如何將音量使用地圖:

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

可能沒有辦法做Windows上。 Unix以將文件句柄表示爲大多數而衆所周知,但是Windows可能不會。 – dnephin

回答

0

第一/ var/run中/docker.sock在您的boot2docker虛擬機中引用相同的路徑。 Correcly寫入/var/run/docker.sock

1

您是否嘗試運行Windows Windows主機上的容器(而不是Windows主機上的Linux容器通過Moby VM)? 在這種情況下,您不能共享命名管道(npipe:////./pipe/docker_engine)作爲泊塢窗卷。

似乎唯一的選擇是使用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,只需用計算機名。這意味着當啓動嵌套容器時需要更多的網絡流量,因爲它需要訪問DNS以將其解析爲通常爲主機的主IP地址的IP地址,而不是docker NAT網關IP。由於Docker守護進程將監聽主機的外部IP,因此它的安全性會降低,因此可以從外部訪問。

然後就可以開始一個容器,只是傳遞的環境變量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

這是真正的答案。非常感謝! – koelkastfilosoof

相關問題