从局域网设备访问docker容器

从局域网设备访问docker容器,docker,Docker,我是docker的新手;我正在运行docker desktop for Mac,我有一个IP为192.168.73.10的容器 在初始设置期间,我将端口转发设置为端口80和443。我可以从本地主机(我的Mac)很好地访问这个容器的web服务;但是,连接到我的LAN的所有设备都位于10.20.0.0/24子网上 如何从LAN(10.20.0.0/24subnet)上的设备访问容器上的web服务?我在Mac上打开了端口80和443。在论坛上找不到任何有用的答案。请帮忙 有两种方法。例如,假设您的容器

我是docker的新手;我正在运行docker desktop for Mac,我有一个IP为192.168.73.10的容器

在初始设置期间,我将端口转发设置为端口
80
443
。我可以从本地主机(我的Mac)很好地访问这个容器的web服务;但是,连接到我的LAN的所有设备都位于
10.20.0.0/24
子网上


如何从LAN(
10.20.0.0/24
subnet)上的设备访问容器上的web服务?我在Mac上打开了端口
80
443
。在论坛上找不到任何有用的答案。请帮忙

有两种方法。例如,假设您的容器是这样启动的:

docker run --restart always -p 9017:80 -d --name organizr --net=my-bridge organizrtools/organizr-v2
docker run --restart always -d --name organizr --net=my-bridge organizrtools/organizr-v2
在上述情况下,您可以通过端口
9017
连接到站点,因为您在计算机上公开了该端口。因此,如果您的机器的IP是例如
10.20.0.1
,您将使用
http://10.20.0.1:9017
。你可以在局域网上的任何机器上使用它

或者,如果您没有打开机器上的端口,只需在容器中进行端口设置,您可以通过其主机名调用它,默认情况下,主机名也是容器的名称

例如,您创建了如下容器:

docker run --restart always -p 9017:80 -d --name organizr --net=my-bridge organizrtools/organizr-v2
docker run --restart always -d --name organizr --net=my-bridge organizrtools/organizr-v2

由于容器中的默认端口设置是port
80
,因此您将进入如下页面:
http://organizr:80
。但这需要从docker网络中调用。

有几种方法。例如,假设您的容器是这样启动的:

docker run --restart always -p 9017:80 -d --name organizr --net=my-bridge organizrtools/organizr-v2
docker run --restart always -d --name organizr --net=my-bridge organizrtools/organizr-v2
在上述情况下,您可以通过端口
9017
连接到站点,因为您在计算机上公开了该端口。因此,如果您的机器的IP是例如
10.20.0.1
,您将使用
http://10.20.0.1:9017
。你可以在局域网上的任何机器上使用它

或者,如果您没有打开机器上的端口,只需在容器中进行端口设置,您可以通过其主机名调用它,默认情况下,主机名也是容器的名称

例如,您创建了如下容器:

docker run --restart always -p 9017:80 -d --name organizr --net=my-bridge organizrtools/organizr-v2
docker run --restart always -d --name organizr --net=my-bridge organizrtools/organizr-v2

由于容器中的默认端口设置是port
80
,因此您将进入如下页面:
http://organizr:80
。这需要从您的docker网络中调用。

这实际上是我网络上的防火墙问题。感谢您的建议和回复。

这实际上是我网络上的防火墙问题。谢谢您的建议和回复。

您可以从其他设备ping您的Mac吗?是的--我的Mac可以访问我网络中的所有设备(反之亦然),也可以访问您Mac上的containerdo a netstat-an | grep 443并查看端口绑定到哪个IP地址,因为您说,您可以从LAN设备ping到Mac,这意味着两个网络之间没有路由问题。理想情况下,您应该能够访问端口80和443,如果不能,请尝试将问题与网络或docker环境隔离,即停止容器,使用netcat打开端口80的虚拟会话,并尝试从LAN设备访问虚拟端口80。Mac是否安装了防火墙,可能会阻止来自外部的通信?能否从其他设备ping您的Mac?是--我的Mac可以访问所有设备(反之亦然)在我的网络中,您还可以通过mac上的netstat-an | grep 443访问容器,查看端口绑定到哪个IP地址,因为您说,您可以从LAN设备ping到mac,这意味着两个网络之间没有路由问题。理想情况下,您应该能够访问端口80和443,如果没有,请尝试将问题与网络或docker环境隔离,即停止容器,使用netcat打开端口80的虚拟会话,并尝试通过LAN设备访问虚拟端口80。Mac是否安装了防火墙,可能会阻止来自外部的通信?