如何使用Docker暴露多个端口?

时间:2013-12-30 18:13:45

标签: docker docker-networking

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

5 个答案:

答案 0 :(得分:570)

要公开一个端口,这就是您需要做的事情:

docker run -p <host_port>:<container_port>

要公开多个端口,只需提供多个-p参数:

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

答案 1 :(得分:213)

步骤1

Dockerfile中,您可以使用动词EXPOSE来展示多个端口 e.g。

EXPOSE 3000 80 443 22

步骤2

然后,您希望根据上述Dockerfile制作新图像 e.g。

docker build -t foo:tag .

步骤3

然后,您可以使用-p将主机端口映射到容器端口,如上面EXPOSE Dockerfile中所定义。 e.g。

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

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

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

答案 2 :(得分:24)

如果您使用docker-compose.yml文件:

services:
    varnish:
        ports:
            - 80
            - 6081

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

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

答案 3 :(得分:0)

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

static void Stackoverflow(Args _args)
{
    #AviFiles
    SysOperationProgress progress = new SysOperationProgress();
    int i, total;

    ;

    progress.setCaption("Exports PDF");
    progress.setAnimation(#AviUpdate);
    total = 90000; //Your total of PDF documento to export
    progress.setTotal(total); 

    for (i = 1; i <= total; i++) //Your loop to create PDF
    {
        //Your code to create PDF in folder
        progress.setText(strfmt("PDF generation %1 of %2", i, total));
        progress.setCount(i, 1);
        //Your code to create PDF in folder END
    }        
}

现在,当您使用docker create --name `container name` --expose 7000 --expose 7001 `image name` 命令启动此容器时,上面配置的端口将公开。

答案 4 :(得分:-1)

以此为例:

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

祝你好运