How to run multiple containers of the same image and expose different ports?

Posted April 15, 2020 31.2k views

Dear community,

I have built a droplet with Ubuntu 18.04 and Docker CE edition. For teaching purposes, I want to run 18 times the same container based on a Docker image hosted on DockerHub:

When I run one container and expose it on the 8787 port, everything runs smoothly and I can access the RStudio instance at my droplet IP address + :8787.

docker run --rm --name rstudio -e PASSWORD=mypwd -p 8787:8787 scienceparkstudygroup/master-gls:openr-latest

My problem is to create multiple instances of the same container but expose it to different ports. I have tried Docker-compose but no success so far.

Any idea?
In advance thank you

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Submit an Answer
2 answers

Hi there @mgalland,

You would just need to adjust the -p argument and change the first part from 8787 to the new port that you would like to use.

For example:

  • Starting the first container on port 8787:
  • docker run --rm --name rstudio-1 -e PASSWORD=mypwd -p 8787:8787 scienceparkstudygroup/master-gls:openr-latest
  • Starting the second container on port 8788:
  • docker run --rm --name rstudio-2 -e PASSWORD=mypwd -p 8788:8787 scienceparkstudygroup/master-gls:openr-latest

Note: Make sure to use different names as well otherwise it would not work.

You could also add Nginx as a reverse proxy to the set up:

Here’s a quick video demo on how to do the above:

Hope that this helps!

Hello bobby
Thank you, it worked like a charm.
I am now running my containers with the --detach option. Still struggling a bit to mount a volume within my machine for each container but I’ll probably figure this out myself.
Thanks again