龗孖 龗孖
首页
  • JAVA
  • 设计模式
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 页面

    • HTML
    • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

靇孖

某微型企业非牛逼技术专家。
首页
  • JAVA
  • 设计模式
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 页面

    • HTML
    • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • JAVA

  • MQ

  • 工具

    • Arthas

    • Docker

      • docker出现Error_response_from_daemon__driver_failed_programming_external_connectivity_on_endpoint解决方法
      • Lombok

      • Redis

      • gitalk

      • hexo

    • 微服务

    • 数据库

    • 其他

    • 程序设计

    • 算法

    • 服务端
    • 工具
    • Docker
    龗孖
    2021-12-30
    目录

    docker出现Errorresponsefromdaemondriverfailedprogrammingexternalconnectivityon_endpoint解决方法

    [root@VM-12-7-centos app]# docker run -d -p 8848:8848 -e MODE=standalone -e PREFER_HOST_MODE=hostname   nacos/nacos-server
    cc4138848eb1964184ae7ad86a8f12ee22bfc4c18c2a65d22805ef82b443cc5a
    docker: Error response from daemon: driver failed programming external connectivity on endpoint wonderful_bassi (709d64059def489b61481a01712c69cf6b379b5da8cec6ffc66a9bed4b0fb295):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8848 -j DNAT --to-destination 172.17.0.3:8848 ! -i docker0: iptables: No chain/target/match by that name.
    (exit status 1)).
    
    
    1
    2
    3
    4
    5

    # 问题产生和原理

    在网上查了很多资料,主要是因为在启动docker容器的时候或者做docker配置的时候,还对防火墙设置重新启动等配置 这样会清除docker的相关配置,导致在查询防火墙规则的时候显示不到docker的链 iptables -L 查询iptables 链

    而docker容器的底层原理: 在启动docker的时候会自动在iptables中注册一个链,通过防火墙的链也可以找到其注册的信息,主要注册这些链,是docker中的容器为了暴露端口而使用的

    具体原因是你删除了iptables中的链 删除链接的方式有很多种

    • 重启firewalld防火墙即可对其清除,firewalld是centos7以上,iptables是centos6以下都会有,而firewalld的底层是涉及在iptables上的,在启动firewalld的时候会自动删除iptables链的相关链接
    • 删除该链接的其他方式博主暂未遇到有特殊情况的,待发现

    所以在涉及防火墙firewalld的命令或者是iptables中的命令的时候 小心删除其涉及docker的链 具体这两个命令可查看其博主相关的文章

    # 问题解决

    既然是firewalld重启导致 而docker重启又会将其注册iptables链回来 那么 我们只需要将其重启docker容器即可解决该问题

    systemctl restart docker
    
    1

    再次查询器docker的链iptables -L 或者是通过这条命令查询iptables -t nat -nL

    上次更新: 2024/11/01, 16:22:32
    如何解决Arthas_failed_to_bind_telnet_or_http_port问题
    Lombok的几个骚操作

    ← 如何解决Arthas_failed_to_bind_telnet_or_http_port问题 Lombok的几个骚操作→

    最近更新
    01
    树中两个节点的最低公共祖先
    10-17
    02
    hexo多平台多博客网站同步
    09-04
    03
    最长不含重复字符的子字符串
    09-03
    更多文章>
    Theme by Vdoing | Copyright © 2015-2024 Ling ma | 996.icu | 京ICP备16011424号-1
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式