我有一台托管虚拟机/Docker 容器的 Debian 机器。我想从外部计算机访问该容器,但是它不仅仅是我需要访问的单个端口,因为该容器托管一个网站,我需要能够向不同的页面发出请求,例如“site.com/ home”或“site.com/index”,我需要能够访问容器上的不同端口,例如192.49.11.1:1234
,192.49.11.1
容器的 IP 地址在哪里(我不知道它是如何获得的)。
我的网络由 Debian 机器、外部(Windows 10)机器和路由器组成。我在想,如果我向路由器的路由表添加一条记录,告诉它将任何请求路由到192.49.11.1
Debian 机器,并且它会知道将它们路由到容器,我就会得到我想要的。
问题是我该如何做到这一点并且这可行吗?
答案1
因为该容器托管一个网站
-p
执行此操作的规范方法是使用选项、Docker Compose YAML 文件中的条目或您使用的任何内容将容器的端口映射到 Docker 主机上的端口。如果您有多个端口,请映射所有端口。
我的网络由 Debian 机器、外部(Windows 10)机器和路由器组成。
因此,您必须使 Debian 机器成为您网络的一部分。你没有告诉我们哪一种它是 VM 的(WSL?Hyper-V?)。谷歌搜索您正在使用的任何类型的虚拟机的文档。 (使用 WSL 相当困难,但有一个解决方法)。
我在想,如果我在路由器的路由表中添加一条记录,告诉它将任何到 192.49.11.1 的请求路由到 Debian 机器
您不会向容器的 IP 发出请求(并且它可能一开始就没有该地址)。您可以向 Debian 主机的 IP 发出请求,如果您还需要 WSL 的端口转发,则可以向 Windows 主机发出请求。