【问题标题】:docker swarm published port rangedocker swarm 发布的端口范围
【发布时间】:2017-12-13 11:54:10
【问题描述】:

当使用docker run发布端口时,我们可以让docker在指定范围内动态选择一个主机端口,例如:

~ $ docker run -d -p 30005-30010:80 alpine tail -f /dev/null
263d3cfa4ba591cb9a1adb5087058aa716c534f33a498cc5457c0c2152b41808
~ $ docker port 263
80/tcp -> 0.0.0.0:30005

这里,docker 已经在主机上选择了一个 30005-30010 范围内的空闲端口来映射到容器的 80 端口。 使用 cli 或 compose 文件似乎无法使用 docker swarm 服务执行此操作。例如

~ $ docker service create -p 30005-30010:80 alpine tail -f /dev/null
invalid argument "30005-30010:80" for p: invalid hostport binding (30005-30010) for port (80)

这是集群模式的限制,还是我遗漏了什么?

【问题讨论】:

    标签: docker docker-swarm


    【解决方案1】:

    docker service create ... 的 swarm 似乎不支持端口范围。

    堆栈文件也不支持它。当您使用主机端口范围执行 docker stack deploy ... 时,也会显示相同的错误。

    支持随机端口:

    docker service create -p :80 alpine tail -f /dev/null
    

    您可以通过在https://github.com/docker/swarm/issues 中插入问题来请求此功能

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-03
      • 2018-08-09
      • 2017-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-22
      • 1970-01-01
      相关资源
      最近更新 更多