docker swarm发布了端口范围

时间:2017-12-13 11:54:10

标签: docker docker-swarm

使用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服务似乎无法做到这一点。 e.g。

~ $ 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)

这是群模式的限制,还是我错过了什么?

1 个答案:

答案 0 :(得分:0)

使用docker service create ...的群组似乎不支持端口范围。

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

然而支持随机端口:

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

您可以在https://github.com/docker/swarm/issues

中插入问题来申请此功能