Сорри за некропостинг, но не понятно, в чем может быть проблема "одинаковых портов", если при запуске контейнера он становится самостоятельным "компьютером" во внутренней сети докера и, стало быть, его порты - это только его порты. Значит, если вы запускаете несколько контейнеров, у которых "пересекаются" порты, то на самом деле они не пересекаются, т.к. находятся на разных "компьютерах". "Пересекаться" они могут только как бы "на выходе" из докера, т.е. на вашем комьютере, где работает докер. А это решается указанием разных "внешних" портов в docker-compose например.