docker: 无法将两个容器端口映射到一个主机端口
docker: cannot map two container ports to one host port
app.json for pm2(src/app.py 是 Flask 应用程序):
{
"apps": [
{
"exec_mode": "fork",
"script": "src/app.py",
"args": ["-p", "8080"]
},
{
"exec_mode": "fork",
"script": "src/app.py",
"args": ["-p", "8081"]
}
]
}
~
Docker 文件:
EXPOSE 8080 8081
CMD ["pm2", "start", "app.json"]
当 运行 docker 时出错:
docker run -p 8080:8080 -p 8080:8081 oct20
docker: Error response from daemon: driver failed programming external connectivity on endpoint high_fermi (xxxxxxxxxxx): Bind for 0.0.0.0:8080 failed: port is already allocated.
有什么想法吗?谢谢
您不能在主机的一个端口上监听两个东西 - 无论它们是一个容器中的独立端口,还是两个 Docker 容器,或两个其他应用程序。这不是 Docker 限制,它是 OS 网络堆栈的一部分。
在这种情况下,如果可以的话,主机会在哪里向端口 8080 发送请求?到容器中的 8080 端口,或 8081 端口,还是将它多播到两者?
app.json for pm2(src/app.py 是 Flask 应用程序):
{
"apps": [
{
"exec_mode": "fork",
"script": "src/app.py",
"args": ["-p", "8080"]
},
{
"exec_mode": "fork",
"script": "src/app.py",
"args": ["-p", "8081"]
}
]
}
~
Docker 文件:
EXPOSE 8080 8081
CMD ["pm2", "start", "app.json"]
当 运行 docker 时出错:
docker run -p 8080:8080 -p 8080:8081 oct20
docker: Error response from daemon: driver failed programming external connectivity on endpoint high_fermi (xxxxxxxxxxx): Bind for 0.0.0.0:8080 failed: port is already allocated.
有什么想法吗?谢谢
您不能在主机的一个端口上监听两个东西 - 无论它们是一个容器中的独立端口,还是两个 Docker 容器,或两个其他应用程序。这不是 Docker 限制,它是 OS 网络堆栈的一部分。
在这种情况下,如果可以的话,主机会在哪里向端口 8080 发送请求?到容器中的 8080 端口,或 8081 端口,还是将它多播到两者?