使用Docker容器的静态IP在另一个网络上运行Web App

时间:2019-06-10 09:56:29

标签: docker asp.net-core

我在端口8086上部署了一个演示Web api项目,我可以使用localhost:8086 / api / controllername在本地浏览器上运行它,还可以使用本地机器的IP地址(例如192.0.0.0:8086/api) / controllername。我尝试从同一局域网中的另一台计算机访问该URL,并且可以访问它。 但是现在我想从其他网络上的机器(公开)访问它。 如何分配静态IP,以便无论网络如何,都可以从任何计算机上使用api。 我使用以下命令创建了一个网络

 docker network create --driver bridge --subnet 172.18.0.0/16 -- gateway=172.18.0.1 IPStatic

 docker network connect --ip 172.18.0.2 IPStatic Containerid.

但无法使用172.18.0.2:8086/api访问api 谁能帮助我进一步采取措施?我想念什么吗?我正在使用asp.net核心网络api,对docker来说还是个新手。

谢谢!

问候。

1 个答案:

答案 0 :(得分:0)

为此,您始终使用主机IP地址,就像在Docker外部运行服务一样。容器专用IP地址无法从其他主机访问(在某些平台上甚至不能从同一主机上的Docker外部访问);手动设置它们或尝试查找它们通常是错误的。

如果该服务拥有其自己的IP地址特别重要,则需要请网络管理员为主机分配一个附加地址。 docker run -p选项只能将服务绑定到特定的网络接口或地址。在Linux主机上,我可能会运行

# Assign the alias address
ifconfig eth0:0 192.0.0.2

# Run the service bound to only this interface
docker run -p 192.0.0.2:80:8080 ...

您可能需要重新配置其他服务,以不监听此新界面。对于Docker服务,您将使用相同的docker run -p选项仅绑定到主机的主接口和本地主机(127.0.0.1);非Docker服务的配置特定于该服务。