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