How can I expose more than 1 port with Docker?

So I have 3 ports that should be exposed to the machine’s interface. Is it possible to do this with a Docker container?

  • Developing NodeJS app using Docker with live relaod
  • Constraint in docker-compose gives container not found error in ucp
  • Docker Exec with OpenSSL and stdin, stdout
  • 'make' command not found in docker container
  • Docker stuck on “Waiting for SSH to be available…”
  • Docker port forwarding between container and host
  • docker: mutual access of container and host ports
  • All external DNS queries fail from within docker container
  • Track docker repositories pull
  • Deploy go app to docker in vagrant
  • Dockerfile VOLUME definition to mount project tree
  • “certificate signed by unknown authority” while trying to pull docker image from trusted registry
  • 3 Solutions collect form web for “How can I expose more than 1 port with Docker?”

    To expose just one port, this is what you need to do:

    docker run -p <host_port>:<container_port>

    To expose multiple ports, simply provide multiple -p arguments:

    docker run -p <host_port1>:<container_port1> -p <host_port2>:<container_port2>


    In your Dockerfile, you can use the verb EXPOSE to expose multiple ports.

    EXPOSE 3000 80 443 22


    You then would like to build an new image based on above Dockerfile.

    docker build -t foo:tag .


    Then you can use the -p to map host port with the container port, as defined in above EXPOSE of Dockerfile.

    docker run -p 3001:3000 -p 23:22

    In case you would like to expose a range of continuous ports, you can run docker like this:

    docker run -it -p 7100-7120:7100-7120/tcp 

    if you use docker-compose.ymlfile:

                - 80
                - 6081

    You can also specify the host/network port

            - 80:80
            - 6081:6081
    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.