【问题标题】:Docker: cannot route docker container port to hostDocker:无法将 docker 容器端口路由到主机
【发布时间】:2020-10-11 06:24:40
【问题描述】:

所以我有一个 docker 容器正在运行,我尝试将其服务端口路由到主机:

这是我的 docker-compose 文件:

version: '3'
services:
  ai-recommender-server:
    build: .
    ports:
      - "3518:3518"

当容器运行时,我可以通过“docker ps -a”查看

CONTAINER ID        IMAGE                                                  COMMAND                  CREATED                  STATUS              PORTS                    NAMES
ff940601a02f        recommender_ai-recommender-server                      "python server.py"       About an hour ago        Up About an hour    0.0.0.0:3518->3518/tcp   recommender_ai-recommender-server_1

当我尝试从容器内部访问时:

$ docker exec -it ff94 sh
/service # curl http://localhost:3518
{
  "message": "AI recommendation system"
}

但是当我尝试在主机上执行此操作时,我收到错误“curl: (56) Recv failure: Connection reset by peer”

$ curl http://localhost:3518
curl: (56) Recv failure: Connection reset by peer

谁能知道我的问题是什么?

【问题讨论】:

    标签: docker docker-compose


    【解决方案1】:

    由于它是 python,我认为您的 python 代码中可能缺少与0.0.0.0 的绑定

    在你的 python server.py 中有这样的东西

    app.run(debug='False',host='0.0.0.0',port=3518)

    【讨论】:

    • 所以我的python代码中有这个:app.run(host='localhost', port=3518, debug=True),有什么问题吗?
    • 是的。如果使用localhost,这在 docker 容器中不起作用。检查这个link
    • 谢谢@Wander3r,它有效!您的链接信息量很大
    • @KenTsoi,请将此答案标记为解决您的问题
    • 抱歉忘记了