为什么不同的Docker映像实例在同一端口上运行

时间:2019-02-08 06:15:23

标签: containers

我创建了具有Docker(windows)支持的Asp.net应用程序。我创建了它的映像(eshoplegacymvc:dev)并使用命令

运行它
docker run eshoplegacymvc:dev

我多次执行上述命令,据我了解,当我们运行它时,网站将可用。

查询:

1)因此,如果我运行5次,是否表示这些网站中有5个实例正在运行?

2)如果是,那么为什么所有端口号都相同?以及如何从本地计算机访问那些网站,我无法做到这一点。

请参见下面的屏幕快照,其中显示了使用docker命令运行的所有进程

Docker ps

enter image description here

2 个答案:

答案 0 :(得分:2)

在运行docker命令时,您尚未指定端口映射。所示的端口80 / tcp是容器tcp端口,而不是主机端口。

1)是,您正在运行5个网站实例。 2)要访问网站,您需要为每个容器实例提供不同的端口映射。

示例:

docker run -p 8081:80 eshoplegacymvc:dev
docker run -p 8082:80 eshoplegacymvc:dev
docker run -p 8083:80 eshoplegacymvc:dev
docker run -p 8084:80 eshoplegacymvc:dev
docker run -p 8085:80 eshoplegacymvc:dev

在以上示例中,容器的tcp端口80绑定到主机的TCP端口8081/8082/8083/8084/8085。

您可以使用http://localhost:8081/

访问该网站

有关端口绑定的更多信息,您可以检查docker docs

答案 1 :(得分:1)

  1. 是的,您正在运行5个网站实例
  2. 您忘记设置端口映射

docker run -p 8888:80 eshoplegacymvc:dev 使用此命令可以映射端口

您的网站将在localhost:8888上运行

对于5个容器,您可以使用-p 8777:80使用不同的端口8888:80进行5次; 8999:80 寻址到容器端口80并将其暴露在8777上