簡體   English   中英

如何從 Docker 桌面為 windows 公開 2375

[英]how to expose 2375 from Docker desktop for windows

我是 Docker 的新手。我的 Docker 桌面 Windows 版本是 19.03.5。 我想從 Docker 桌面為 windows 公開端口 2375,但是如果我使用 GUI 設置, 在此處輸入圖像描述 只能通過 tcp://127.0.0.1 訪問,我的內部 IP 地址 192.168.3.9 不起作用。
https://learn.microsoft.com/en-us/virtualization/windowscontainers/manage-docker/configure-docker-daemon
該文檔說要編輯C:\ProgramData\Docker\config\daemon.json並添加"hosts": ["tcp://0.0.0.0:2375"] ,但它不適用於任何 IP 地址,我我很確定我是按照文件做的。
那么我應該怎么做才能從同一su.net中的另一台計算機通過tcp://192.168.3.9進行訪問?

在某些配置(WSL2 后端/Linux 容器)中,您不能強制 com.docker.proxy.exe 公開 TCP 端口 2375(它將永遠綁定 127.0.0.1:2375)

使用簡單的 NAT 轉發規則

netsh interface portproxy add v4tov4 listenport=2375 listenaddress=[public IP, NOT 0.0.0.0] connectaddress=127.0.0.1 connectport=2375

為了達到你想要的

類似於@131 的回答。 問題是 Docker 在 2375 中運行,但在某些設置中它只綁定到本地主機(WSL2 后端/Linux 容器)

這應該以管理員身份運行:

netsh interface portproxy add v4tov4 listenport=3375 listenaddress=0.0.0.0 connectaddress=127.0.0.1 connectport=2375

然后你可以在客戶端執行

DOCKER_HOST=192.168.1.1:3375 docker ps

要么

docker -H tcp://192.168.1.10:3375 ps

其中192.168.1.1是您的 Docker 主機 IP

Docker 不在 Windows 上本地運行。 它實際上創建了一個 Linux VM,在其中運行 docker 守護程序。 您可以使用 VirtualBox 看到這個 VM(假設您像許多其他人一樣使用 VirtualBox 進行虛擬化)。

因此,為了進行設置,您需要修改此 VM。 您需要確保其網絡接口處於 NAT 模式,然后在高級設置中您可以將端口 (2375) 從主機轉發到訪客。 重新啟動 Docker,它應該可以工作了。

GUI設置是linux容器,就是這個問題,切換到windows容器,編輯C:\\ProgramData\\Docker\\config\\daemon.json ,添加"hosts": ["tcp://0.0.0.0:2375"]會工作。

DEng,您的解決方案使 docker 桌面崩潰

如果您在 Windows 上運行 docker 守護程序

以外:

netsh interface portproxy add v4tov4 listenport=3375 listenaddress=0.0.0.0 connectaddress=127.0.0.1 connectport=2375

我需要在 windows 防火牆中為入站流量添加規則 + 啟用邊緣遍歷 以另一種方式,我的所有流量都被默認的Query User阻止規則阻止了:

This filter blocks any inbound packets for which there is no explicit rule to allow the packet, unless the user has allowed through the Query User pop up.

向防火牆添加規則:

  1. Go 至Windows Security->Advanced Settings->Inbound Rules->New Rule
  2. 選擇Port -> Next -> TCPSpecific local ports :2375或3375,取決於你轉發的端口; 添加您想要遠程請求的其他端口列表。
  3. 完成創建規則后,從列表中選擇 select 並打開屬性。 Go 到Advanced->Edge Traversal和 select Allow edge traversal

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM