我遇到从Docker访问主机上非80端口的问题。我的容器中有一个应用程序需要访问主机上的此端口55555。
我有2个VM-VM1和VM2。 VM1具有泊坞窗和正在运行的容器。 VM2是我用来进行测试的机器。
用于启动容器的命令
docker run -dit --hostname VM1 --name ContainerTest mcr.microsoft.com/dotnet/framework/sdk:3.5-20191008-windowsservercore-ltsc2019
我执行exec -it XXXX powershell
以执行所需的PowerShell脚本。我使用test-netconnection
来测试我的连接。
问题:
test-netconnection -ComputerName "VM1" -port 55555
-失败。
但是,我可以运行test-netconnection -ComputerName "VM1" -port 80
并且可以接收TcpTestSucceeded
。我尝试过的所有其他端口也都失败了。我尝试了什么:
我证明了VM1的端口55555已向公众开放,因为我可以ping通,并通过tcp成功地将其从VM2测试到VM1。
关闭VM1上的防火墙。也没有成功。
我也知道docker有--expose and -p
命令公开端口,但是,就我而言,我认为不需要,因为我的目标是从容器而不是其他容器访问主机的端口。方式。
我不明白为什么端口55555仅可从VM2访问VM1,而不能从容器访问VM1,并且该容器只能通过端口80访问VM1。谁能分享一些正在发生的事情?欣赏它。
答案 0 :(得分:0)
一般来说,有一种服务可以打开端口,而不仅仅是端口号 在docker中,您应该使用docker网络驱动程序覆盖,以便在其他网络中使用docker 希望链接能帮到你 https://docs.docker.com/network/