【发布时间】:2022-03-14 15:00:55
【问题描述】:
我找不到最好的答案,因此我在这里发布我的问题。
如何创建具有多个网络接口的容器?
- 第一个网络公开端口,以便其他人可以访问;
- 容器需要访问网关设备的第二个网络;
------------------- -----------------------
----------- .---| port:3000 exposed |---| host / lan can access |
| container |----< ------------------- -----------------------
----------- '_ ------------------- -----------------------
'-| 192.168.1.0/24 |---| access to 192.168.1.1 |
------------------- -----------------------
我的主机上至少有 3 个网络接口,wlan0、eth0、eth1(usb-lan 适配器)。
我在 eth1 上连接了网关。 eth0 是我需要暴露容器端口的地方。 wlan0 用于通过 ssh 管理主机。
这在容器内可能吗? 我对 docker 或 docker-compose 解决方案持开放态度。
【问题讨论】:
-
一般来说,您对 Docker 的网络设置没有这种级别的控制。一个容器有一个网络接口,您可以将特定端口发布到特定主机接口,但仅此而已。似乎
ports:的正确组合可能能够完成您所描述的操作,但这完全是容器外的(非编程)配置。 -
我至少可以在 1 个界面上完成这项工作吗?我也许可以使用一个接口,然后从主机运行代理服务器以将请求转发到容器...
-
您是否有现有的 Compose 设置(带有
ports:)或docker run命令(带有-p选项)?默认情况下,这些选项会将指定的容器端口发布到所有主机接口,但您可以对其进行限制,这不会影响容器本身具有的(人工)网络接口;你能用它来实现你的目标吗?
标签: docker docker-compose