在不同端口redirect两个Docker容器的相同端口

我需要运行一个Java应用程序到几个Docker容器中,以隔离它们的执行。

这个应用程序侦听端口12345,我用“-p 12345:5000”运行我的docker容器redirect端口12345(从docker容器)到我的主机端口5000。 它工作正常。

但是,当我运行另一个docker容器“-p 12345:50001”,我有一个错误“绑定0.0.0.0:12345失败:端口已被分配。

我不明白为什么..谢谢:)

你已经混淆了你的主机和容器端口!

主机端口是第一位的,必须是唯一的。 集装箱港口排在第二位。 你可能想要这样的东西,如果你的Java应用程序都在容器中的同一个端口上运行:

"-p 12345:50000" "-p 12346:50000" 

或者如果他们真的在容器中暴露不同的端口:

 "-p 12345:50000" "-p 12346:50001"