docker群发布港口范围

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

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

在这里,docker已经在主机上select了一个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 service create ...中被swarm支持。

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

但随机端口是受支持的:

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

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