docker - 如何使用 Docker Compose 文件发布具有 'mode=host' 的一系列端口?

标签 docker docker-compose docker-swarm

在 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 must be a integer

有没有办法做到这一点(通过将范围内的每个端口都指定为长格式的暴力破解除外)?

最佳答案

目前这是不可能的。

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

记住有一个 open ticke和这件事有关,我想在不久的将来会有可能。

关于docker - 如何使用 Docker Compose 文件发布具有 'mode=host' 的一系列端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45193939/

相关文章:

docker - 从Docker容器中获取主机IP地址

linux - Kubernetes与Linux之间的兼容性

与登录 shell 断开连接时 Docker 容器不退出

python - pycharm "Note that you cannot install any Python packages into Docker-based project interpreters."

docker - 如何在docker-compose中更改Docker堆栈生成的服务名称

docker - 保存并稍后还原Docker堆栈状态

docker - 将docker日志消息重定向到不同的syslog文件中(logsspout向前滚动)

node.js - 使用 docker-compose 时, Node 应用程序无法连接到 Redis

bash - Docker:RUN touch 不会创建文件

postgresql - 使用 docker swarm 模式时如何将数据保存在卷上?