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

Containers 为什么在同一端口上运行不同的Docker映像实例,containers,Containers,我创建了一个支持Docker(windows)的Asp.net应用程序。我创建了它的映像(eshoplegacymvc:dev),并使用命令运行它 docker run eshoplegacymvc:dev 我多次运行上述命令,我的理解是,当我们运行它时,网站将可用 查询: 1) 所以,如果我运行它5次,是否意味着这些网站的5个实例正在运行 2) 若是,那个么为什么所有的端口号都是相同的呢?我如何从本地机器访问这些网站,我无法做到这一点 请参阅下面的屏幕截图,其中显示了使用docker命令运行

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

docker run eshoplegacymvc:dev
我多次运行上述命令,我的理解是,当我们运行它时,网站将可用

查询:

1) 所以,如果我运行它5次,是否意味着这些网站的5个实例正在运行

2) 若是,那个么为什么所有的端口号都是相同的呢?我如何从本地机器访问这些网站,我无法做到这一点

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

Docker ps

运行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

您可以使用


有关端口绑定的详细信息,您可以在运行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

您可以使用

有关端口绑定的更多信息,请查看

  • 是的,您正在运行5个网站实例
  • 您忘了设置端口映射
  • docker-run-p 8888:80 eshoplegacymvc:dev
    使用此命令可以映射端口

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

    对于5个集装箱,您可以使用-p 8777:80和不同的端口8888:80执行5次;8999:80 它寻址到集装箱端口80,并将其暴露在8777之上

  • 是的,您正在运行5个网站实例
  • 您忘了设置端口映射
  • docker-run-p 8888:80 eshoplegacymvc:dev
    使用此命令可以映射端口

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

    对于5个集装箱,您可以使用-p 8777:80和不同的端口8888:80执行5次;8999:80
    将其寻址到80号集装箱港口,并将其暴露在8777上方

    谢谢我的理解。当我使用选项-d时,控件返回,而当我不使用选项-d时,控件不返回,为什么会这样?我如何访问容器或使用它有什么区别吗?@Sujit-d是用于-detach模式的后台运行容器和打印容器ID@HarshManvar如果我们使用-D或不使用-D,那么在容器使用或实用程序方面有什么区别吗?假设您使用的是laravel,容器上的最后一个命令是php artisan sever…那么容器输出将本地主机运行在端口:8080……若你们现在按control+c container get TerminatedHanks,你们可以检查容器的输出。我明白了。当我使用选项-d时,控件返回,而当我不使用选项-d时,控件不返回,为什么会这样?我如何访问容器或使用它有什么区别吗?@Sujit-d是用于-detach模式的后台运行容器和打印容器ID@HarshManvar如果我们使用-D或不使用-D,那么在容器使用或实用程序方面有什么区别吗?假设您使用的是laravel,容器上的最后一个命令是php artisan sever…那么容器输出是否在端口8080上运行localhost……如果按control+c container get Terminated,您现在可以检查容器的输出。因此,如果一个网站的5个实例在主机的同一端口上运行(例如端口映射为8777:80),那么将调用哪个容器实例?全部或任意一个?它将位于端口基座n上,如超级答案…8777:80;8888:80 ; 8999:80您可以在此处检查分离模式是的,我使用的是windows容器。因此,如果一个网站的5个实例在主机的同一端口上运行(例如端口映射为8777:80),那么将调用哪个容器实例?全部或任意一个?它将位于端口基座n上,如超级答案…8777:80;8888:80 ; 8999:80您可以在此处检查分离模式是的,我正在使用windows容器。