如何使用 Docker 公开多个端口?

问题描述 投票:0回答:7

所以我有 3 个端口应该暴露给机器的接口。是否可以使用 Docker 容器来完成此操作?

docker docker-networking
7个回答
1069
投票

要仅公开一个端口,您需要执行以下操作:

docker run -p <host_port>:<container_port>

要公开多个端口,只需提供多个

-p
参数:

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

465
投票

步骤1

在您的

Dockerfile
中,您可以使用动词
EXPOSE
来公开多个端口。
例如

EXPOSE 3000 80 443 22

步骤2

然后您想基于上面构建一个新图像

Dockerfile

例如

docker build -t foo:tag .

步骤3

然后您可以使用

-p
将主机端口与容器端口映射,如上面
EXPOSE
Dockerfile
中所定义。
例如

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

如果您想公开一系列连续端口,您可以像这样运行 docker:

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

46
投票

如果您使用

docker-compose.yml
文件:

services:
    varnish:
        ports:
            - 80
            - 6081

您还可以将主机/网络端口指定为

HOST/NETWORK_PORT:CONTAINER_PORT

varnish:
    ports:
        - 81:80
        - 6081:6081

5
投票

以此为例:

docker create --name new_ubuntu -it -p 8080:8080 -p  15672:15672 -p 5432:5432   ubuntu:latest bash

查看您创建的内容(并复制其容器 ID xxxxx):

docker ps -a 

现在写下奇迹创造者的话(开始):

docker start xxxxx

祝你好运


4
投票

如果您要从图像创建容器并希望公开多个端口(而不是发布),您可以使用以下命令:

docker create --name `container name` --expose 7000 --expose 7001 `image name`

现在,当您使用

docker start
命令启动此容器时,上面配置的端口将被公开。


4
投票

仅补充一点。您可以选择指定要在 dockerfile 中以及运行时公开的端口范围

在 dockerfile 上:

EXPOSE 8888-8898

建立形象:

docker build -t <image_name>:<version> -f dockerfile .

运行图像时:

docker run -it -p 8888-8898:8888-8898 -v C:\x\x\x:/app <image_name>:<version>

0
投票
WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install
RUN npm install -g pm2

COPY . ./

EXPOSE 3000
EXPOSE 9200

CMD npm run start

它不适用于两个端口

© www.soinside.com 2019 - 2024. All rights reserved.