• Docker的iptables规则在iptables重启后丢失


    前因后果

    1、在跳板机上使用ansible命令测试机器B时,报错如下,于是就怀疑是网络防火墙的问题

    10.10.0.86 | FAILED >> {
        "failed": true, 
        "msg": "/bin/sh: /usr/bin/python: No such file or directory
    OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017
    debug1: Reading configuration data /etc/ssh/ssh_config
    debug1: /etc/ssh/ssh_config line 19: Applying options for *
    debug1: auto-mux: Trying existing master
    debug1: mux_client_request_session: master session id: 2
    Shared connection to 10.10.0.86 closed.
    ", 
        "parsed": false
    }

    2、登录到机器B上,这是一台线上的机器,里面运行docker容器,然后我看平时的经验一般是网络防火墙有问题就直接

    iptables -F
    systemctl stop iptables 
    systemctl stop firewalld 

    3、然后我想着这应该不会影响容器吧,就看容器的日志,没想到10几个全部报错,都是连接不上,有点慌...,重启容器,完全是起不来的,报错如下

    docker: Error response from daemon: driver failed programming external connectivity on endpoint happy_ptolemy (9cedc114be35eb86cd6f7f7bb4f11f93b5f8d2c0745afc72664cef8e96aad439): iptables failed: iptables --wait -t filter -A DOCKER ! -i docker0 -o docker0 -p tcp -d 10.10.0.86 --dport 3000 -j ACCEPT: iptables: No chain/target/match by that name.
    
    (exit status 1).

    4、解决办法,重启docker

    systemctl restart docker

    知识点

     
    1、netfilter与iptables的关系
     
    Netfilter是在Linux内核中的一个防火墙框架,用于管理网络数据包,不仅具有网络地址转换(NAT)的功能,也具有数据包内容修改,以及数据包过滤等防火墙功能。利用在用户空间的应用软件iptables等来控制Netfilter(iptables只是应用软件,工具)。
     
    2、iptables与firewalld的关系
     
    firewalld和iptables一样都是应用软件,是工具,但是他的底层还是先通过iptables。
     
     
     
    3、docker与firewalld、iptables的关系
     
    1)docker安装完成后,会自动接管iptables或者firewalld,在docker run的时候,会自动往iptables里加入规则;所以当iptables重启后会丢失,只有再重启docker就好了的原因。
    2)当使用Systemd 的时候, firewalld 会在 Docker 之前启动,但是如果你在 Docker 启动之后再启动 或者重启 firewalld ,就需要重启 Docker 进程了。
     

    总结

    1、对生产环境的敬畏
    2、对知识点的理解不透彻,不知道什么场景能用,什么场景不能用
    3、后面还需要把防火墙的规则再深入了解
  • 相关阅读:
    Laravel5.1 搭建简单的社区(十一)--上传头像
    Laravel5.1 搭建简单的社区(十)--实现下拉菜单
    Laravel5.1 搭建简单的社区(九)--发表评论
    Laravel5.1 搭建简单的社区(八)--展示评论
    Laravel5.1 搭建简单的社区(六)--修改文章
    git 批量删除远程分支
    如何在vscode中调试代码
    【CSS黑科技2】CSS百分比实现高度占位自适应(margin/padding)
    sourceTree 更新svn提示can't locate SVN/Core.pm
    【CSS黑科技1】使用CSS的currentColor变量写DRY代码
  • 原文地址:https://www.cnblogs.com/lemon-le/p/12976999.html
Copyright © 2020-2023  润新知