• 【云原生】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

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

  • 相关阅读:
    产业区块链生态日:你的故事,我们在等待 | 征集帖
    C# string stringbuilder区别
    Syncro 深化与 Splashtop 的协作以简化远程访问
    移动端适配-(postcss-pxtorem)
    如何在React项目中使用TypeScript
    计算机网络学习笔记(Ⅱ):物理层
    2023-10-22 LeetCode每日一题(做菜顺序)
    趣学python编程 (二、计算机硬件和用途介绍)
    【C语言】——三道基础程序练习
    QService 服务 指令引用的“0x00000000”内存。该内存不能为“read“
  • 原文地址:https://blog.csdn.net/qq_35764295/article/details/126382432