在docker service

时间:2017-01-26 15:36:14

标签: docker-swarm vsftpd docker-swarm-mode

有没有办法在创建swarm服务时公开一系列端口(例如:-p 1024-2000:1024-2000)?我知道容器可能是可能的,但是它也可以用于Swarm服务吗?如果是的话,我无法在文档中找到如何做到这一点。

我需要此功能来公开包含vsftpd的服务。

1 个答案:

答案 0 :(得分:0)

发布问题https://github.com/docker/docker/issues/30560后,我得到的回复是此功能在版本 1.13 中可用。

对于无法升级到此版本的其他人,我编写了一个脚本bash,它将循环绑定所有端口:

  expose_range(){
          p="";
          for i in `seq $1 $2`;
          do
            if [[ $3 != '--publish-rm' ]]; then
              p="$p $3 $i:$i"
            else
              p="$p $3 $i"
            fi
          done
          echo $p
  }
  command="docker service create --name vsftpd -p 2021:21 `expose_range ${vsftpd_port_min} ${vsftpd_port_max} '-p'` panubo/vsftpd"
  eval $command