表现

  • systemctl status docker,显示正常,可以pull,push,build
  • 宿主机访问外网没问题,可以连上ubuntu的阿里的源
  • 运行容器映射的端口在本机无法访问,用curl 127.0.0.1:端口,显示:
    curl: (56) Recv failure: Connection reset by peer
    
  • docker build的时候,使用apt-get install xx,无法访问,哪怕镜像源是国内的阿里之类的.
    在改为 docker build --network host后又可以了

原因:

docker的网桥出问题了,导致映射端口无效,docker run -d -p 8080:80, 非常确定容器内的应用正常启动,curl 127.0.0.1:8080失败

验证问题:

用于验证的镜像

  • 也可以直接下载已经写好的镜像: simple_server,直接验证

  • 用golang编写一个简单的http服务,编译为simple_server

    package mainimport ("flag""fmt""net/http"
    )func indexHandler(w http.ResponseWriter, r *http.Request) {fmt.Fprintf(w, "hello world")
    }func main() {var port intflag.IntVar(&port, "p", 8080, "端口号,默认为8080")flag.Parse()fmt.Println("监控在端口", port)http.HandleFunc("/", indexHandler)err := http.ListenAndServe(fmt.Sprintf(":%d", port), nil)if err != nil {fmt.Println("错误: ", err)}
    }
  • 编写Dockerfile

    FROM ubuntu
    RUN echo 'deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse \n\
    deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse \n\
    deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse \n\
    deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse \n\
    deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse \n\
    deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse \n\
    deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse \n\
    deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse \n\
    deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse \n\
    deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse '>/etc/apt/sources.listRUN apt-get update -y
    RUN apt-get install curl -yCOPY simple_server /home/
    CMD ["/home/simple_server", "-p", "80"]
    
  • 放在同一个目录,并执行: docker build . --network host -t simple_server, 目录:

    [root@ tmp]# tree server
    server
    ├── Dockerfile
    └── simple_server
    0 directories, 2 files
    

运行容器进行验证

  • 运行:docker run -d -p 8080:80 simple_server
  • 进入容器运行: curl 127.0.0.1, 成功打印:hello world
  • 在宿主机上运行: curl 127.0.0.1:8080, 一直卡住,然后报no route 之类的错误

解决

参考: 通过重建 docker0 网络解决问题

  • 下面的这些命令是在ubuntu20上执行的,可以参照你自己的操作系统做出修改
  • systemctl stop docker # 停止docker 服务
  • pkill docker # 杀掉docker进程
  • iptables -t nat -F # 清理iptables
  • ip link set docker0 down # 停止docker0网卡
  • brctl delbr docker0 # 删除docker0网卡
  • systemctl start docker # 启动docker服务

docker端口映射无法访问的解决相关推荐

  1. Docker端口映射无法访问的问题排查

    概述 前些天,老大让升级Docker版本,后面折腾了一番,成功升级到最新版本Docker,Docker容器啥的都跑起来了,以为一切顺利了,结果第二天就发现容器映射到宿主机的端口无法访问.在宿主机用 c ...

  2. linux docker端口映射无法访问,docker设置了端口映射,不能访问的解决方案

    #docker ps 查看, 所有端口都 做了映射 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 764b158ba491 open-fa ...

  3. docker端口映射失效解决方法

    docker端口映射失效解决方法 参考文章: (1)docker端口映射失效解决方法 (2)https://www.cnblogs.com/erfsfj-dbc/p/11815972.html 备忘一 ...

  4. docker端口映射或启动容器时报错 driver failed programming external connectivity on endpoint quirky_allen

    docker端口映射或启动容器时报错  Error response from daemon: driver failed programming external connectivity on e ...

  5. docker端口映射或启动容器时报错 driver failed programming external connectivity on endpoint

    docker端口映射或启动容器时报错 Error response from daemon: driver failed programming external connectivity on en ...

  6. docker端口映射或启动容器时报错Error response from daemon: Container is not running

    docker端口映射或启动容器时: docker exec -it 7c5a2350c4cb /bin/bash 出现了错误: Error response from daemon: Containe ...

  7. 服务器端口映射到公网不通解决方法

    服务器端口映射到公网不通解决方法 参考文章: (1)服务器端口映射到公网不通解决方法 (2)https://www.cnblogs.com/tiantianhappy/p/11357384.html ...

  8. dlink中设置端口映射图文讲解(解决电驴tcp链接测试失败问题)

    http://hi.baidu.com/wwt06/item/29d5d5246f3a71d50f37f9f6 dlink中设置端口映射图文讲解(解决电驴tcp链接测试失败问题) 今天找一个资源的时候 ...

  9. docker端口映射,批量删除容器

    docker端口映射 http://blog.csdn.net/yjk13703623757/article/details/69212521 批量删除容器 http://blog.csdn.net/ ...

  10. docker 端口映射 及外部无法访问问题:开启IP转发从而解决

    docker容器内提供服务并监听8888端口,要使外部能够访问,需要做端口映射. docker run -it --rm -p 8888:8888 server:v1 此时出现问题,在虚机A上部署后, ...

最新文章

  1. 卫星互联网行业深度报告:战火早已熊熊燃烧
  2. git介绍和常用操作
  3. Whctf 2017 -UNTITLED- Writeup
  4. slk文件转换器安卓版_MP3提取转换器
  5. BGP 下一跳的理解和实验
  6. Android系统里面的服务器和客户端的概念解析
  7. 文旅展演专业委员会成功换届,为文旅展演导入新活力
  8. Android 恢复出厂设置(recovery)
  9. Uncaught TypeError: Cannot read property 'alpha' of undefined 报错解决
  10. Python——飞机大战源码(含飞机爆炸效果动图)
  11. 【复】一次流量分析经历
  12. 扔掉你 Windows 操作系统中的盗版软件吧
  13. 微信开发者工具:代码更新后页面未刷新
  14. 如何修改Adobe Acrobat身份信息中的登录名
  15. [Excel]空白填充上一行数据
  16. 全志H616——刷机以及初步配置
  17. jOOQ-将两个表的连接提取到相应的POJO中
  18. 华大HC32F460的BOOT和IAP说明
  19. 二、何为Spring Boot整合Spring Cloud?
  20. 海底捞市值超大多数上市房企,火锅是怎么做到比卖房还赚钱的?

热门文章

  1. 如何防止mysql删库_数据库如何防止程序员删库到跑路
  2. 判断单链表是否中心对称算法
  3. lingo入门教程之二 --- 集合运用
  4. 0x0000005c蓝屏问题解决
  5. Linux下显示IP地理位置信息的工具-nali
  6. 177、模拟行走机器人
  7. SWIFT国际清算体系的科普贴
  8. excel打不开_mac版excel死机该如何恢复?
  9. 2020亚马逊创新日:深度解读人工智能和机器学习的数字驱动力
  10. 视觉 注意力机制——通道注意力、空间注意力、自注意力