使用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)
这是群模式的限制,还是我错过了什么?
答案 0 :(得分:0)
使用docker service create ...
的群组似乎不支持端口范围。
堆栈文件也不支持它。当您使用主机端口范围执行docker stack deploy ...
时,会显示相同的错误。
然而支持随机端口:
docker service create -p :80 alpine tail -f /dev/null
中插入问题来申请此功能