Docker中iptables规则在iptables重启后丢失的完整过程

前因后果

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

10.10.0.86 | FAILED >> {
 "failed": true,
 "msg": "/bin/sh: /usr/bin/python: No such file or directory\r\nOpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug1: /etc/ssh/ssh_config line 19: Applying options for *\r\ndebug1: auto-mux: Trying existing master\r\ndebug1: mux_client_request_session: master session id: 2\r\nShared connection to 10.10.0.86 closed.\r\n",
 "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、后面还需要把防火墙的规则再深入了解

到此这篇关于Docker中iptables规则在iptables重启后丢失的文章就介绍到这了,更多相关Docker中iptables规则重启后丢失内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解Docker使用Linux iptables 和 Interfaces管理容器网络

    我使用docker至今已有一段时间了,与绝大部分的人一样,我被docker强大的功能和易用性深深的折服.简单方便是docker的核心之一,它强大的功能被抽象成了非常简单的命令.当我在使用和学习docker的时候,我很想知道docker在后台都做了一些什么事情,特别是在网络这一块(我最感兴趣的一块) 我找到了很多关于创建和操作容器网络的文档,但是关于docker如何使网络工作的却没有那么多. Docker广泛使用linux iptables和网桥接口,这篇文章是我如何用于创建容器网络的总结,大部分

  • 在Docker容器中使用iptables时的最小权限的开启方法

    在Docker容器中使用iptables时的最小权限的开启方法 Dcoker容器在使用的过程中,有的时候是需要使用在容器中使用iptables进行启动的,默认的docker run时都是以普通方式启动的,没有使用iptables的权限,那么怎样才能在容器中使用iptables呢?要如何开启权限呢? 那么在docker进行run的时候如何将此容器的权限进行配置呢?主要是使用--privileged或--cap-add.--cap-drop来对容器本身的能力的开放或限制.以下将举例来进行说明: 例如

  • Docker中iptables规则在iptables重启后丢失的完整过程

    前因后果 1.在跳板机上使用ansible命令测试机器B时,报错如下,于是就怀疑是网络防火墙的问题 10.10.0.86 | FAILED >> { "failed": true, "msg": "/bin/sh: /usr/bin/python: No such file or directory\r\nOpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017\r\ndebug1:

  • linux防火墙iptables规则的查看、添加、删除和修改方法总结

    1.查看 iptables -nvL --line-number -L 查看当前表的所有规则,默认查看的是filter表,如果要查看NAT表,可以加上-t NAT参数 -n 不对ip地址进行反查,加上这个参数显示速度会快很多 -v 输出详细信息,包含通过该规则的数据包数量,总字节数及相应的网络接口 –-line-number 显示规则的序列号,这个参数在删除或修改规则时会用到 2.添加 添加规则有两个参数:-A和-I.其中-A是添加到规则的末尾:-I可以插入到指定位置,没有指定位置的话默认插入到

  • Shell脚本实现监控iptables规则是否被修改

    最近看了一篇通过nagios实现MD5实时监控iptables状态的文章,就想是否可以用shell也做到监控iptables规则改变,经过实验,就有了下面这个脚本. 系统:centos 5.x 脚本内容: cat check_iptables.sh 复制代码 代码如下: #!/bin/bash if [ ! -f .count ];then   iptables -L -n|md5sum|awk '{print $1}' > ~/.count   exit 1 else   iptables -

  • wamp中mysql安装时能启动重启后无法启动的解决办法

    第一次安装wamp之后,所有服务可以正常使用,但是重启之后wamp的图标就变成黄色的了,重装了也这样 查看一下错误日志: 日志显示的错误是这样的: 日志提示可能是3306端口被占用的错误,那来看一下是哪个程序占用了3306端口: windows下运行cmd ,输入 netstat -aon|findstr "3306" 可以看到是pid为2092这个程序占用了3306端口,把他结束掉 输入指令: taskkill /f /pid 2092 成功之后重启wamp,正常启动! 总结 以上所

  • VMWare中Ubuntu重启后无法上网的解决方法

    如何解决VMWare中Ubuntu重启后无法上网,具体如下 原因:没有设置静态的DNS,导致系统每次重启都会把先前设置的DNS删除. 重启后无法上网: 1.查看DNS: 2.发现之前配置的DNS不见了 解决方法: (1)重新设置DNS 命令: 添加 nameserver 220.115.187.250(本地物理主机DNS) **(2)添加静态的DNS 命令:** 添加 dns-nameserver 220.115.187.250(本地物理主机DNS) 保存就生效了,重启也没问题. (3).成功上

  • 在docker中部署并启动redis的方法

    docker部署redis 首先在linux中安装上Docker,然后启动Docker服务 Centos7中 启动Docker systemctl start docker //启动docker systemctl stop docker //停止docker systemctl restart docker //重启docker 查找想要拉取的镜像 1. 直接在Linux中使用docker search 镜像名称 搜索镜像        docker search 镜像名称 2. 在Docke

  • 详解Docker中VLAN网络模式的配置

    前言 Docker作为目前最火的轻量级容器技术,有很多令人称道的功能,如Docker的镜像管理.然而,Docker同样有着很多不完善的地方,网络 方面就是Docker比较薄弱的部分.因此,我们有必要深入了解Docker的网络知识,以满足更高的网络需求. Docker网络模式选择 目前已有不少文章介绍了Docker的网络模型,但是在实际应用中还是有不少坑和需要注意的点 在Docker应用到生产环境的时候,网络模型的选择主要有以下几种 1.原生Bridge NAT模式 2.Linux Bridge

  • 浅谈docker compose书写规则

    本文对集群部署相关的一概不做介绍 版本约束 Docker Engine >= 19.03 Docker Compose >=3.8 结构介绍 docker-compose.yaml 文件结构主要由 version # docker compose版本 networks # 网络,用于docker容器内部通讯 x-{name} # 模版命名规则 以x-开头 用于复用 volumes # 挂载卷 services # 服务模块,内部定义容器信息 其内部参数相当于docker run时的参数 模块介

  • 解决Docker中的error during connect异常情况

    刚开始接触Docker,遇到异常问题难免会手忙脚乱.没事的,学习就是这样子,在困难中不断地找到解决问题的方法,贵在坚持,加油! 来了来了,问题来了,不要慌,看下面: 我们正常打开了Docker后执行命令后报出error during connect异常. 后面给出了对应异常错误的解释: No connection could be made because the target machine actively refused it.(无法连接,因为目标机器主动拒绝它.)这下子我们知道问题在哪了

  • 对docker中的overlay式网络详解

    翻译自docker官方文档,原文:https://docs.docker.com/network/overlay/ overlay(覆盖)式网络会在多个docker守护进程所在的主机之间创建一个分布式的网络.这个网络会覆盖宿主机特有的网络,并允许容器连接它(包括集群服务中的容器)来安全通信.显然,docker会处理docker守护进程源容器和目标容器之间的数据报的路由. 当你初始化一个集群(swarm)或把一个docker宿主机加入一个已经存在的集群时,宿主机上会新建两个网络: 一个叫ingre

随机推荐