• 【云原生】Docker报错:curl: (56) Recv failure: Connection reset by peer解决


    前言

    使用docker-compose up启动服务后访问报错curl: (56) Recv failure: Connection reset by peer

     curl -v 127.0.0.1:8000
    
    • 1
    [root@iZhp33j6fklnmhbf0lz2obZ admin]# curl -v 127.0.0.1:8000
    * Rebuilt URL to: 127.0.0.1:8000/
    *   Trying 127.0.0.1...
    * TCP_NODELAY set
    * Connected to 127.0.0.1 (127.0.0.1) port 8000 (#0)
    > GET / HTTP/1.1
    > Host: 127.0.0.1:8000
    > User-Agent: curl/7.61.1
    > Accept: */*
    > 
    * Recv failure: Connection reset by peer
    * Closing connection 0
    curl: (56) Recv failure: Connection reset by peer
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    外部访问telnet接口能通。

    排查

    1.查看容器服务

    [root@iZhp33j6fklnmhbf0lz2obZ admin]# docker ps
    CONTAINER ID   IMAGE                   COMMAND                  CREATED         STATUS         PORTS                                       NAMES
    f4571922817f   admin_web               "python app.py"          3 minutes ago   Up 3 minutes   0.0.0.0:8000->3000/tcp, :::8000->3000/tcp   admin_web_1
    
    • 1
    • 2
    • 3

    2.进入容器内部查看端口状态

    进入容器内部查看端口是否正常一致。

     docker exec -it admin_web_1 /bin/sh
     netstat -ntlp
    
    • 1
    • 2
    [root@iZhp33j6fklnmhbf0lz2obZ admin]# docker exec -it admin_web_1 /bin/sh
    /usr/local/bin # netstat -ntlp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 0.0.0.0:5000            0.0.0.0:*               LISTEN      1/python
    tcp        0      0 127.0.0.11:41025        0.0.0.0:*               LISTEN      -
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    从容器内部发现端口3000并不存在,只有5000端口(flask默认端口),证明端口没对应上。

    解决

    修改docker-compose.yml文件端口保证一致。

    version: '3'
    services:
      web:
        build: .
        ports:
          - "8000:5000"
        volumes:
          - .:/code
      redis:
        image: "redis:alpine"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    python文件:

    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route("/") 
    def index():
        return 'Hello World! '
    
    if __name__ == "__main__":
    	# 设置运行信息
        app.run(host="0.0.0.0",  debug=True)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    小拓展

    常用中间件默认端口

    MySQL默认端口 3306

    Redis默认端口 6379

    MongoDB默认端口 27017

    django端口 8000

    flask端口 5000

    pyspider服务端口 5000(由flask开发)

    gerapy服务端口 8000(由django开发)

    scrapyd服务端口 6800

    ipython notebook 默认端口 8888

    HTTP默认端口 80

    HTTPS服务默认端口443

    在这里插入图片描述
    点赞 收藏 关注

  • 相关阅读:
    数据驱动!精细化运营!用机器学习做客户生命周期与价值预估!
    js绘制的漂亮玫瑰曲线rose curve
    【学习笔记】4、组合逻辑电路(下)
    (选专业)你适合国际贸易类专业吗?
    net基于asp.net的警院学生奖励管理系统-计算机毕业设计
    SpringCloud——服务拆分
    以TrueType为例谈字形描述
    使用Postman快速复现浏览器的请求(包括生成调用代码)
    java学习(Arrays类和System类)
    GitLab SAST:如何将Klocwork与GitLab一起使用
  • 原文地址:https://blog.csdn.net/qq_35764295/article/details/126382432