Как я могу открыть более 1 порт с Docker?

Итак, у меня есть 3 порта, которые должны быть открыты для машинного интерфейса. Возможно ли это сделать с контейнером 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