docker - 使用 Docker 容器的静态 IP 在另一个网络上运行 Web 应用程序
问题描述
我在端口 8086 上部署了一个演示 Web API 项目。我可以使用 localhost:8086/api/controllername 在本地浏览器上运行它,还可以使用本地机器 IP 地址,例如:192.0.0.0:8086/api/controllername。我尝试从同一 LAN 上的另一台计算机访问 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 core web api,我对 Docker 还很陌生。
解决方案
为此,您始终使用主机 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
选项仅绑定到主机的主接口和 localhost (127.0.0.1);非 Docker 服务的配置是特定于服务的。
推荐阅读
- javascript - 如何从正在卸载的背景中删除事件侦听器?
- php - 如果 POST 正文超过 ~16 000 个字符,则 file_get_contents("php://input") 为空
- javascript - 无法使用 dynamodb-data-mapper-js 使用 LSI 创建 DynamoDB 表
- java - 将泛型类与泛型类一起使用
- excel - Vba 将 .Vlookup 更改为 .vlookup
- eclipse - 仅在当前文件中搜索所有出现的字符串
- multi-user - 如何在多用户应用程序 VB.net 和 SQL Server 的查询中获取正确的索引
- c# - 串口打不开
- python - 在 Windows 10 中安装后无法加载“rpy2”模块
- sql - 在 SQL 查询结果中打开 Chrome