我在 pihole 反向代理后面的 RPi 上运行 nginx,以及其他几个代理容器。我想:
默认情况下,所有端口都发布在容器所属的所有网络上,我试图避免这种情况。本质上我想这样做:
version: '3'
services:
pihole:
container_name: pihole
hostname: pihole
image: pihole/pihole:latest
networks:
- default
- intraonly
ports:
- default:53:53/tcp
- default:53:53/udp
- intraonly:80/tcp
- intraonly:443/tcp
[...nginx & other services definitions follow...]
networks:
intraonly:
driver: bridge
internal: true
上述显然失败了,因为文档清楚地说明它只需要IP地址在端口定义中:
<块引用>指定要绑定到 AND 两个端口的主机 IP 地址(默认为 0.0.0.0,表示所有接口):(IPADDR:HOSTPORT:CONTAINERPORT)。
然而,这看起来很疯狂,因为IP 地址每次都会改变我重建容器。在其他地方,文档建议避免寻址其他容器通过 IP 地址,而是选择符号服务名称(由 DNS 发布)。
我错过了什么? 在没有硬编码 IP 地址的情况下在特定接口上公开端口的正确/可靠方法是什么? (我知道我可以使用 expose
语法实现仅限内部使用的端口),但将端口绑定到特定自定义网络的问题仍然存在。)