如何在Docker Compose文件中使用'mode=host'发布一系列端口?

9
在Docker Compose文件中,我可以使用短格式语法轻松发布一系列端口:
ports:
  - "3000-3010:3000-3010/udp"

但在我的情况下,我需要将这些端口设置为“mode=host”,以绕过Swarm覆盖网络。短格式语法无法表达这一点,因此我需要使用长格式:

ports:
  - published: "3000-3010"
    target: "3000-3010"
    protocol: udp
    mode: host

然而,使用长格式语法指定范围时,Docker似乎不喜欢,因为在部署堆栈时我会遇到以下错误:
services.test.ports.0.target必须是整数
除了通过长格式强制指定范围中的每个端口以外,有没有其他方法可以实现?

1
确实是个好问题(目前也在处理同样的问题)... 你找到答案了吗?你找到使用长格式语法发布端口范围的解决方案了吗? - cool
尝试最新的边缘版本-一些人报告在17.11.0-ce中有改进,至少能够将这些值作为环境变量传递;或者只需等待即将推出的17.12版本。请参见此链接:https://github.com/docker/cli/issues/229 - Ivan
1个回答

8

目前这是不可能的。

根据我在官方docker slack频道上关于此功能的讨论,使用长格式语法(目前唯一可以在主机模式下发布端口的语法)来公开一系列端口是不可能的。

考虑到有一个与此相关的未解决问题,我想这将很快被解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接