Итак, у меня есть 3 порта, которые должны быть открыты для машинного интерфейса. Возможно ли это сделать с контейнером Docker?
Как я могу открыть более 1 порт с Docker?
Ответ 1
Чтобы открыть только один порт, это то, что вам нужно сделать:
docker run -p <host_port>:<container_port>
Чтобы открыть несколько портов, просто укажите несколько аргументов -p:
docker run -p <host_port1>:<container_port1> -p <host_port2>:<container_port2>
Ответ 2
Step1
В вашем Dockerfile вы можете использовать глагол EXPOSE для отображения нескольких портов. 
например.
EXPOSE 3000 80 443 22
Step2
Затем вы хотели бы создать новое изображение на основе выше Dockerfile. 
например.
docker build -t foo:tag .
Step3
Затем вы можете использовать -p для сопоставления хост-порта с портом контейнера, как определено выше EXPOSE of Dockerfile. 
например.
docker run -p 3001:3000 -p 23:22
Если вы хотите открыть ряд непрерывных портов, вы можете запустить докеры следующим образом:
docker run -it -p 7100-7120:7100-7120/tcp 
Ответ 3
 если вы используете файл docker-compose.yml:
services:
    varnish:
        ports:
            - 80
            - 6081
Вы также можете указать хост/сетевой порт
varnish:
    ports:
        - 80:80
        - 6081:6081
