Moby: iptables 失败 - 没有该名称的链/目标/匹配

创建于 2015-10-07  ·  60评论  ·  资料来源: moby/moby

错误报告信息

docker version :
客户端版本:1.7.1
客户端 API 版本:1.19
Go 版本(客户端):go1.4.2
Git 提交(客户端):786b29d
操作系统/Arch(客户端):linux/amd64
服务器版本:1.7.1
服务器 API 版本:1.19
Go 版本(服务器):go1.4.2
Git 提交(服务器):786b29d
操作系统/Arch(服务器):linux/amd64

docker info
容器:41
图片:172
存储驱动:devicemapper
池名称:docker-253:2-4026535945-pool
池块大小:65.54 kB
支持文件系统:xfs
数据文件:/dev/loop0
元数据文件:/dev/loop1
使用的数据空间:7.748 GB
数据空间总计:107.4 GB
可用数据空间:99.63 GB
使用的元数据空间:12.55 MB
元数据空间总计:2.147 GB
可用元数据空间:2.135 GB
支持 Udev 同步:true
已启用延迟删除:true
数据循环文件:/var/lib/docker/devicemapper/devicemapper/data
元数据循环文件:/var/lib/docker/devicemapper/devicemapper/metadata
库版本:1.02.93-RHEL7 (2015-01-28)
执行驱动程序:native-0.2
日志记录驱动程序:json 文件
内核版本:3.10.0-123.el7.x86_64
操作系统:CentOS Linux 7 (Core)
CPU:24
总内存:125.6 GiB
名称:
ID:

uname -a
Linux3.10.0-123.el7.x86_64 #1 SMP 2014 年 6 月 30 日星期一 12:09:22 UTC x86_64 x86_64 x86_64 GNU/Linux

环境详细信息(AWS、VirtualBox、物理等):
身体的
iptables 版本 1.4.21

重现性如何:
随机的

重现步骤:

  1. 使用映射到主机端口的公开端口启动容器
  2. 停止容器
  3. 重复,祝你好运。

实际结果:

Cannot start container <container id>: iptables failed: iptables --wait -t filter -A DOCKER ! -i docker0 -o docker0 -p tcp -d 172.17.0.23 --dport 4000 -J ACCEPT: iptables: No chain/
target/match by that name.

预期成绩:

容器启动没有问题。

附加信息:

我还将提到这些容器是通过 Apache Mesos (0.23.0) 使用 Marathon 启动的。 看起来类似于#13914。

arenetworking statumore-info-needed

最有用的评论

@shayts7所描述的问题完全相同。 目前的解决方法是重新启动守护程序:

service docker restart

所有60条评论

你好!

请阅读有关创建问题的重要信息。

如果您要报告新问题,请确保我们没有任何已打开的重复问题。 您可以通过搜索此存储库的问题列表来确保这一点。 如果有重复,请关闭您的问题并改为对现有问题添加评论。

如果您怀疑您的问题是错误,请编辑您的问题描述以包含如下所示的错误报告信息。 如果您未能在 7 天内提供此信息,我们将无法调试您的问题并将其关闭。 但是,如果您稍后提供信息,我们将重新打开它。

这是一个自动的信息响应。

谢谢你。

有关报告问题的更多信息,请参阅https://github.com/docker/docker/blob/master/CONTRIBUTING.md#reporting -other-issues


错误报告信息

使用以下命令从您的环境中提供关键信息:

docker version :
docker info
uname -a

提供其他环境详细信息(AWS、VirtualBox、物理等):

列出重现问题的步骤:
1.
2.
3.

描述您收到的结果:

描述您预期的结果:

提供您认为重要的其他信息:

----------结束报告 ---------

需要更多信息

请注意此错误的其他未解决问题: https ://github.com/docker/docker/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+No+chain%2Ftarget%2Fmatch+by

@cpuguy83看起来其中一些有相同的错误但不完全相同,#13914 似乎相似。

@mindscratch您是否尝试过关闭firewalld?

@cpuguy83我们不使用firewalld 只是iptables

@mindscratch在那个问题上,升级到 1.8.3 似乎可以解决问题; 你还能在 1.8.3(或 1.9.0)上重现这个吗?

我将不得不查看我们的日志,我们进行了一项 cron 作业,试图找到问题并在它成为问题之前解决它,我没有注意到。 cron 作业记录了它是否必须修复 iptables,所以我会检查一下。 我现在正在运行 1.9.0。

我有同样的问题。

➜  docker  cat docker-compose.yml
poste:
    image: analogic/poste.io
    volumes:
        - "/srv/mail/data:/data"
    ports:
        - 25:25
        - 80:8081
        - 443:8443
        - 110:110
        - 143:143
        - 465:465
        - 587:587
        - 993:993
        - 995:995
➜  docker  docker-compose up poste
Recreating docker_poste_1
WARNING: Service "poste" is using volume "/data" from the previous container. Host mapping "/srv/mail/data" has no effect. Remove the existing containers (with `docker-compose rm poste`) to use the host volume mapping.
ERROR: Cannot start container 187de1f595dc544c503a4bf565d2101c0b0b3805d601ae704d0014750166776e: failed to create endpoint docker_poste_1 on network bridge: iptables failed: iptables -t nat -A DOCKER -p tcp -d 0/0 --dport 995 -j DNAT --to-destination 172.17.0.2:995 ! -i docker0: iptables: No chain/target/match by that name.
 (exit status 1)
➜  docker  docker -v
Docker version 1.9.1, build a34a1d5
➜  docker  docker info
Containers: 2
Images: 73
Server Version: 1.9.1
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 77
 Dirperm1 Supported: true
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.16.0-0.bpo.4-amd64
Operating System: Debian GNU/Linux 7 (wheezy)
CPUs: 8
Total Memory: 23.59 GiB
Name: Debian-60-squeeze-64-minimal
ID: 7PDG:3ZCD:RL4G:KJAE:PZCO:XTUH:JLRX:IIM4:DHXM:TWHY:UMCK:4GUS
WARNING: No memory limit support
WARNING: No swap limit support
➜  docker  docker version
Client:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5
 Built:        Fri Nov 20 13:06:12 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5
 Built:        Fri Nov 20 13:06:12 UTC 2015
 OS/Arch:      linux/amd64

➜  docker  uname -a
Linux Debian-60-squeeze-64-minimal 3.16.0-0.bpo.4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u6~bpo70+1 (2015-11-11) x86_64 GNU/Linux

我可以向您发送什么信息?

我也有同样的错误
image

当我停止防火墙后重新启动容器时会出现此问题

docker 版本:Docker 版本 1.9.1,构建 a34a1d5
码头工人信息:
uname -a: Linux databus0 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

提供其他环境详细信息(AWS、VirtualBox、物理等):

列出重现问题的步骤:

  1. docker run -d --name=sth -p4444:4444 someth
  2. killall 防火墙
  3. 码头工人重新启动某事

描述您收到的结果:

Error response from daemon: Cannot restart container sth: failed to create endpoint sth on network bridge: iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 4444 -j DNAT --to-destination 172.17.0.5:4444 ! -i docker0: iptables: No chain/target/match by that name.
 (exit status 1)
Error: failed to restart containers: [sth]

描述您预期的结果:
重启ok

提供您认为重要的其他信息:

----------结束报告 ---------

需要更多信息

概述
尝试运行“docker-compose run -d”时会发生以下错误 - 但前提是 20+ 端口向主机公开。

_ERROR: Cannot start container dcd5227651790c197835e3f2016f8c747bb748f86e95d6492c75f5e3f83ab47d: failed to create endpoint relaydocker_relay_1 on network bridge: iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/17 --dport destination 33172. .0.2:30903 ! -i docker0: (fork/exec /sbin/iptables: 无法分配内存)_

错误报告信息

ubuntu@ip-172-31-36-213:~/relay_docker$ docker-compose up -d
Removing relaydocker_relay_1
Recreating 22ac1bb421_22ac1bb421_22ac1bb421_relaydocker_relay_1
ERROR: Cannot start container dcd5227651790c197835e3f2016f8c747bb748f86e95d6492c75f5e3f83ab47d: failed to create endpoint relaydocker_relay_1 on network bridge: iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 33320 -j DNAT --to-destination 172.17.0.2:30903 ! -i docker0:  (fork/exec /sbin/iptables: cannot allocate memory)



ubuntu@ip-172-31-36-213:~/relay_docker$ docker version
Client:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5
 Built:        Fri Nov 20 13:12:04 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5
 Built:        Fri Nov 20 13:12:04 UTC 2015
 OS/Arch:      linux/amd64
ubuntu@ip-172-31-36-213:~/relay_docker$ docker info
Containers: 69
Images: 563
Server Version: 1.9.1
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 701
 Dirperm1 Supported: false
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.13.0-74-generic
Operating System: Ubuntu 14.04.2 LTS
CPUs: 1
Total Memory: 992.5 MiB
Name: relay-v1
ID: ZXD2:QKYD:UCX3:2KNK:5J7V:OWHH:CUCS:3V2N:LJWT:YV3N:4BLS:ZBYC
Username: vincentsiu
Registry: https://index.docker.io/v1/
WARNING: No swap limit support
Labels:
 provider=amazonec2
ubuntu@ip-172-31-36-213:~/relay_docker$ uname -a
Linux ip-172-31-36-213 3.13.0-48-generic #80-Ubuntu SMP Thu Mar 12 11:16:15 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
ubuntu@ip-172-31-36-213:~/relay_docker$

Dockerfile

FROM ubuntu:14.04

RUN apt-get update && apt-get install -y openssh-server
#RUN apt-get -y install sudo

RUN mkdir -p /var/run/sshd

# configure sshd_config
RUN sed -i "s/PermitRootLogin.*/PermitRootLogin without-password/g" /etc/ssh/sshd_config
RUN sed -i "s/Port .*/Port 2200/g" /etc/ssh/sshd_config
RUN sed -i "s/LoginGraceTime.*/LoginGraceTime 30/g" /etc/ssh/sshd_config
RUN echo "GatewayPorts yes" >> /etc/ssh/sshd_config

# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so<strong i="15">@session</strong> optional pam_loginuid.so<strong i="16">@g</strong>' -i /etc/pam.d/sshd

ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile

# ssh port exposed for the container
EXPOSE 2200

# listening to these ports for port forwarding
EXPOSE 8079-8080
EXPOSE 9875-9876
EXPOSE 30000-31000
CMD ["/usr/sbin/sshd", "-D"]

Docker-compose.yml

relay:
  restart: always
  build: ./relay
  ports:
    - "2200:22"
    - "8001-9876:8001-9876"
    - "30000-31000:30000-31000"
  command: /usr/sbin/sshd -D

如果我尝试在 docker-compose.yml 中公开端口 30000-31000,那么运行“Docker-compose up -d”会给我“iptables failed”错误。

_ERROR: Cannot start container dcd5227651790c197835e3f2016f8c747bb748f86e95d6492c75f5e3f83ab47d: failed to create endpoint relaydocker_relay_1 on network bridge: iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/17 --dport destination 33172. .0.2:30903 !

如果我将暴露端口的数量减少到少于 20 个,那么容器将毫无问题地启动。

我已经读到我可以尝试使用 --iptables=false 重新启动 docker 守护进程。 我怎样才能用 docker-compose 做到这一点?

@vincentsiu您的问题听起来与https://github.com/docker/docker/issues/11185更相关

我在 ESXi VM 上使用 docker 1.9.1 和 centos7 (1511) 时遇到类似问题

docker version
    Client:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5
 Built:        Fri Nov 20 13:25:01 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5
 Built:        Fri Nov 20 13:25:01 UTC 2015
OS/Arch:      linux/amd64
docker info

Containers: 0
Images: 11
Server Version: 1.9.1
Storage Driver: btrfs
 Build Version: Btrfs v3.16.2
 Library Version: 101
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.10.0-327.4.4.el7.x86_64
Operating System: CentOS Linux 7 (Core)
CPUs: 1
Total Memory: 1.797 GiB
Name: swhost-1.rz.tu-bs.de
ID: YNJD:42IN:VKFR:OBQV:4OF3:EIZV:D7ML:MXTO:FJLL:IGP5:JVQG:5POK
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled

如果我启动注册表 v2 容器:

docker run --rm -ti  -v /mnt/registry/content:/var/lib/registry -p 5000:5000 -v /mnt/registry/config/config.yml:/etc/docker/registry/conf.yml -v /etc/pki/tls/docker/:/mnt --name registry registry:2

端口已关闭,我无法连接

Host is up (0.00025s latency).
Not shown: 998 filtered ports
PORT     STATE  SERVICE
22/tcp   open   ssh
5000/tcp closed upnp
unable to ping registry endpoint https://swhost-1:5000/v0/
v2 ping attempt failed with error: Get https://swhost-1:5000/v2/: dial tcp 134.169.8.97:5000: connection refused
 v1 ping attempt failed with error: Get https://swhost-1:5000/v1/_ping: dial tcp 134.169.8.97:5000: connection refused

根据firewall-cmd,端口是开放的

firewall-cmd --zone=public --list-all
public (default, active)
  interfaces: eno16780032
  sources: 
  services: dhcpv6-client ssh
  ports: 5000/tcp
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules:

iptables -L -v -n

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   10   536 DOCKER     all  --  *      docker0  0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  *      docker0  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
   10   400 ACCEPT     all  --  docker0 !docker0  0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  docker0 docker0  0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
    0     0 FORWARD_direct  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 FORWARD_IN_ZONES_SOURCE  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 FORWARD_IN_ZONES  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 FORWARD_OUT_ZONES_SOURCE  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 FORWARD_OUT_ZONES  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

...

Chain DOCKER (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     tcp  --  !docker0 docker0  0.0.0.0/0            172.17.0.2           tcp dpt:5000

如果我停止防火墙

systemctl stop firewalld

 docker run --rm -ti  -v /mnt/registry/content:/var/lib/registry -p 5000:5000 -v /mnt/registry/config/config.yml:/etc/docker/registry/config.yml -v /etc/pki/tls/docker/:/mnt --name registry registry:2

Error response from daemon: Cannot start container b6795863c0469c55e89244e12b764ce686948bfdea57542243beabbf81da4441: failed to create endpoint registry on network bridge: iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 5000 -j DNAT --to-destination 172.17.0.2:5000 ! -i docker0: iptables: No chain/target/match by that name.
 (exit status 1)

我们也注意到了这种行为。

码头工人版本:

Client:
 Version:      1.9.0
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   76d6bc9
 Built:        Tue Nov  3 17:37:20 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.9.0
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   76d6bc9
 Built:        Tue Nov  3 17:37:20 UTC 2015
 OS/Arch:      linux/amd64

码头工人信息:

Containers: 12
Images: 592
Server Version: 1.9.0
Storage Driver: devicemapper
 Pool Name: docker-253:0-2354982-pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 107.4 GB
 Backing Filesystem: extfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 15.72 GB
 Data Space Total: 107.4 GB
 Data Space Available: 38.99 GB
 Metadata Space Used: 35.24 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.112 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.74 (2012-03-06)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.2.69-xnt-nogr-1.5.3
Operating System: Debian GNU/Linux 7 (wheezy)
CPUs: 16
Total Memory: 15.88 GiB
Name: dev03
ID: F4IG:2KNZ:TABI:SHGC:RWIN:3AYQ:5EX2:XI7N:DOHP:2VXQ:ASDK:RFF6
WARNING: No memory limit support
WARNING: No swap limit support

unname -a:

Linux dev03 3.2.69-xnt-nogr-1.5.3 #1 SMP Thu May 14 21:03:15 CEST 2015 x86_64 GNU/Linux

提供其他环境详细信息(AWS、VirtualBox、物理等):
此环境是 XenServer 虚拟主机。
iptables v1.4.14

列出重现问题的步骤:

  1. 使用映射到主机端口的公开端口启动容器
  2. 停止容器
  3. 重复

描述您收到的结果:

root<strong i="24">@dev03</strong>:~# docker restart foo
Error response from daemon: Cannot restart container foo: failed to create endpoint foo on network bridge: iptables failed: iptables -t filter -A DOCKER ! -i docker0 -o docker0 -p tcp -d 172.17.0.9 --dport 1234 -j ACCEPT: iptables: No chain/target/match by that name.
 (exit status 1)
Error: failed to restart containers: [foo]

描述您预期的结果:
成功的 docker 重启。

这也发生在我身上。

来自守护进程的错误响应:无法重新启动容器 HAProxy:无法在网桥上创建端点 HAProxy:iptables 失败:iptables --wait -t filter -A DOCKER! -i docker0 -o docker0 -p tcp -d 172.17.0.5 --dport 8888 -j ACCEPT: iptables: No chain/target/match by that name。
(退出状态 1)

如果我运行:

iptables -N 码头工人

iptables:链已经存在。

仅供参考:请记住,我正在使用 root 用户运行 docker-compose,在这篇文章中我没有看到任何人使用 sudo 或 su 运行命令。

尽管重新启动 docker 服务至少可以在一段时间内恢复系统的健康状况,但这是一个可怕的解决方法......

何时修复此问题的任何其他替代方案或预计到达时间?
最好的,

我遇到了类似的问题,通过运行以下命令解决了:
# iptables -t filter -N DOCKER
希望能帮助到你!

它也发生在我们身上,但在我们的例子中iptables -t filter -L -v -n表明 DOCKER 链存在,只有在使用iptables -t nat -L -v -n检查 nat 表时,我们才发现 DOCKER 链不知何故消失了......

Chain PREROUTING (policy ACCEPT 6402K packets, 388M bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain INPUT (policy ACCEPT 981K packets, 62M bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 1001K packets, 63M bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 514K packets, 31M bytes)
 pkts bytes target     prot opt in     out     source               destination
  83M 5047M FLANNEL    all  --  *      *       192.168.0.0/16       0.0.0.0/0
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.135       192.168.18.135       tcp dpt:8080
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.167       192.168.18.167       tcp dpt:8081
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.167       192.168.18.167       tcp dpt:8080
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.172       192.168.18.172       tcp dpt:8080
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.186       192.168.18.186       tcp dpt:8081
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.186       192.168.18.186       tcp dpt:8080
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.194       192.168.18.194       tcp dpt:53
    0     0 MASQUERADE  udp  --  *      *       192.168.18.194       192.168.18.194       udp dpt:53
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.197       192.168.18.197       tcp dpt:3000
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.198       192.168.18.198       tcp dpt:1936
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.198       192.168.18.198       tcp dpt:443
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.198       192.168.18.198       tcp dpt:88
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.198       192.168.18.198       tcp dpt:80
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.2         192.168.18.2         tcp dpt:53
    0     0 MASQUERADE  udp  --  *      *       192.168.18.2         192.168.18.2         udp dpt:53
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.4         192.168.18.4         tcp dpt:1936
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.4         192.168.18.4         tcp dpt:443
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.4         192.168.18.4         tcp dpt:88
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.4         192.168.18.4         tcp dpt:80
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.5         192.168.18.5         tcp dpt:8080
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.6         192.168.18.6         tcp dpt:3000
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.8         192.168.18.8         tcp dpt:8081
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.8         192.168.18.8         tcp dpt:8080
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.9         192.168.18.9         tcp dpt:8081
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.9         192.168.18.9         tcp dpt:8080
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.10        192.168.18.10        tcp dpt:8080

Chain FLANNEL (1 references)
 pkts bytes target     prot opt in     out     source               destination
5481K  332M ACCEPT     all  --  *      *       0.0.0.0/0            192.168.0.0/16
 426K   27M MASQUERADE  all  --  *      *       0.0.0.0/0           !224.0.0.0/4

重新启动 docker daemon 后一切正常,我们可以看到 DOCKER 链回到 nat 表:

Chain PREROUTING (policy ACCEPT 5765 packets, 347K bytes)
 pkts bytes target     prot opt in     out     source               destination
 1592 96542 DOCKER     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT 1236 packets, 75057 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 3135 packets, 203K bytes)
 pkts bytes target     prot opt in     out     source               destination
    1    77 DOCKER     all  --  *      *       0.0.0.0/0           !127.0.0.0/8          ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT 2423 packets, 159K bytes)
 pkts bytes target     prot opt in     out     source               destination
  83M 5047M FLANNEL    all  --  *      *       192.168.0.0/16       0.0.0.0/0
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.135       192.168.18.135       tcp dpt:8080
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.167       192.168.18.167       tcp dpt:8081
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.167       192.168.18.167       tcp dpt:8080
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.172       192.168.18.172       tcp dpt:8080
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.186       192.168.18.186       tcp dpt:8081
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.186       192.168.18.186       tcp dpt:8080
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.194       192.168.18.194       tcp dpt:53
    0     0 MASQUERADE  udp  --  *      *       192.168.18.194       192.168.18.194       udp dpt:53
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.197       192.168.18.197       tcp dpt:3000
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.198       192.168.18.198       tcp dpt:1936
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.198       192.168.18.198       tcp dpt:443
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.198       192.168.18.198       tcp dpt:88
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.198       192.168.18.198       tcp dpt:80
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.2         192.168.18.2         tcp dpt:53
    0     0 MASQUERADE  udp  --  *      *       192.168.18.2         192.168.18.2         udp dpt:53
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.4         192.168.18.4         tcp dpt:1936
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.4         192.168.18.4         tcp dpt:443
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.4         192.168.18.4         tcp dpt:88
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.4         192.168.18.4         tcp dpt:80
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.5         192.168.18.5         tcp dpt:8080
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.6         192.168.18.6         tcp dpt:3000
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.8         192.168.18.8         tcp dpt:8081
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.8         192.168.18.8         tcp dpt:8080
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.9         192.168.18.9         tcp dpt:8081
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.9         192.168.18.9         tcp dpt:8080
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.10        192.168.18.10        tcp dpt:8080
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.2         192.168.18.2         tcp dpt:53
    0     0 MASQUERADE  udp  --  *      *       192.168.18.2         192.168.18.2         udp dpt:53
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.5         192.168.18.5         tcp dpt:3000
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.6         192.168.18.6         tcp dpt:5601
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.7         192.168.18.7         tcp dpt:8201
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.7         192.168.18.7         tcp dpt:8200
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.8         192.168.18.8         tcp dpt:8080
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.9         192.168.18.9         tcp dpt:8080
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.10        192.168.18.10        tcp dpt:8081
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.10        192.168.18.10        tcp dpt:8080
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.11        192.168.18.11        tcp dpt:8081
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.11        192.168.18.11        tcp dpt:8080
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.12        192.168.18.12        tcp dpt:1936
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.12        192.168.18.12        tcp dpt:443
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.12        192.168.18.12        tcp dpt:88
    0     0 MASQUERADE  tcp  --  *      *       192.168.18.12        192.168.18.12        tcp dpt:80

Chain DOCKER (2 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DNAT       tcp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:53 to:192.168.18.2:53
    0     0 DNAT       udp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:53 to:192.168.18.2:53
    0     0 DNAT       tcp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:3210 to:192.168.18.5:3000
    0     0 DNAT       tcp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:5601 to:192.168.18.6:5601
    0     0 DNAT       tcp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:8201 to:192.168.18.7:8201
    0     0 DNAT       tcp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:8200 to:192.168.18.7:8200
    0     0 DNAT       tcp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:8050 to:192.168.18.8:8080
    0     0 DNAT       tcp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:9002 to:192.168.18.9:8080
    0     0 DNAT       tcp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:8041 to:192.168.18.10:8081
    0     0 DNAT       tcp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:8040 to:192.168.18.10:8080
    0     0 DNAT       tcp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:8081 to:192.168.18.11:8081
    0     0 DNAT       tcp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:8080 to:192.168.18.11:8080
   27  1620 DNAT       tcp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:1936 to:192.168.18.12:1936
    0     0 DNAT       tcp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443 to:192.168.18.12:443
  139  8340 DNAT       tcp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:88 to:192.168.18.12:88
   24  1440 DNAT       tcp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 to:192.168.18.12:80

Chain FLANNEL (1 references)
 pkts bytes target     prot opt in     out     source               destination
5489K  332M ACCEPT     all  --  *      *       0.0.0.0/0            192.168.0.0/16
 427K   27M MASQUERADE  all  --  *      *       0.0.0.0/0           !224.0.0.0/4

如果有人知道为什么链条消失了,我会很高兴听到的。

@shayts7所描述的问题完全相同。 目前的解决方法是重新启动守护程序:

service docker restart

@fredrikaverpil太棒了! 有效!

大家好,

我正在使用coreos并且也有这个问题,但仅限于我的主人。

运行iptables -t nat -N DOCKER解决了这个问题,pods 会自动创建,一切都很好。 我想知道为什么这条链在我的主人而不是我的工人身上被移除。

有这个问题。 对我们来说,事实证明 docker 是在我们的防火墙持久性(iptables-persistent)之前启动的,它的规则被覆盖了。 我通过删除包来解决,因为我们仅将它用于 1 条规则。

有一些方法可以通过确保 docker 在 iptables-persistent(https://groups.google.com/forum/#!topic/docker-dev/4SfOwCOmw-E) 之后启动或添加任何规则来保持它的并行工作docker 服务添加到持久 iptables 配置中(没有测试这个)。
可能对@Seraf有帮助, @shayts7

这不是 docker 错误,但也许应该在文档或其他内容中解决

@vlad-vintila-hs 感谢您的提示

同样的问题在这里 Ubuntu 14.04 与 docker 1.11.1 和 docker-compose 1.7.1 没有解决方法解决了这个问题。

解决了机器重启,顺便说一句,这是一个糟糕的解决方案。

对我来说,这似乎只发生在 CentOS 7 上。

这就是我所做的

停止防火墙

sudo systemctl stop firewalld
sudo systemctl disable firewalld

重启你的机器

sudo reboot

只要您将--restart=always放入您的 docker 实例。 当您的机器重新启动时,docker 实例应该正在运行,并且应该绑定端口。 我相信这个问题专门针对使用 firewalld 而不是 iptables 的 CentOS7 家族。

@vlad-vintila-hs 我遇到了同样的情况。谢谢你的提示。

关注@fredrikaverpil 。谢谢。

我尝试:

ip link delete docker0

systemctl restart docker

@kanlidy 用你的方法解决了, 多谢.

这对我有用! 在所有 CentOS7.2 系统上

ip link delete docker0
systemctl restart docker

好的

这仅使用以下方法修复正在运行的容器:
docker run -d -p ...

但它仍然不适用于 docker swarm 1.12 和 1.12.1 使用
docker service create --publish ...

它不会打开端口并在防火墙日志中的一系列 iptables 规则上抱怨failed: iptables: No chain/target/match by that name

遇到与@virtuman相同的问题,在没有激活防火墙的 Photon OS 上使用 docker 1.12.1。

[ ~ ]# docker version
Client:
 Version:      1.12.1
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   23cf638
 Built:        Thu Aug 18 17:52:38 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.1
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   23cf638
 Built:        Thu Aug 18 17:52:38 2016
 OS/Arch:      linux/amd64
 [ ~ ]# iptables -t nat -L -v -n
Chain PREROUTING (policy ACCEPT 445 packets, 26876 bytes)
 pkts bytes target     prot opt in     out     source               destination         
88136 5323K DOCKER-INGRESS  all  --  *      *       0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL
 9768  590K DOCKER     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT 445 packets, 26876 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 336 packets, 20552 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   55  3740 DOCKER-INGRESS  all  --  *      *       0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL
    5   322 DOCKER     all  --  *      *       0.0.0.0/0           !127.0.0.0/8          ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT 336 packets, 20552 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MASQUERADE  all  --  *      !docker0  172.17.0.0/16        0.0.0.0/0           
    3   246 MASQUERADE  all  --  *      !docker_gwbridge  172.19.0.0/16        0.0.0.0/0           
   25  1380 MASQUERADE  all  --  *      docker_gwbridge  0.0.0.0/0            0.0.0.0/0            ADDRTYPE match src-type LOCAL
   23  1619 MASQUERADE  all  --  *      !docker_gwbridge  172.18.0.0/16        0.0.0.0/0           

Chain DOCKER (2 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 RETURN     all  --  docker0 *       0.0.0.0/0            0.0.0.0/0           
    0     0 RETURN     all  --  docker_gwbridge *       0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-INGRESS (2 references)
 pkts bytes target     prot opt in     out     source               destination         
 9759  589K RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0        

在覆盖网络上:

[ ~ ]# docker network inspect mynet
[
    {
        "Name": "mynet",
        "Id": "5glt9tb0yaoqz8l89mp3jdrkc",
        "Scope": "swarm",
        "Driver": "overlay",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": []
        },
        "Internal": false,
        "Containers": null,
        "Options": {
            "com.docker.network.driver.overlay.vxlanid_list": "259"
        },
        "Labels": null
    }
]
 [ ~ ]# docker service inspect mytest
[
    {
        "ID": "0nh2vprk2w0mmkj4cve7v1qsg",
        "Version": {
            "Index": 518
        },
        "CreatedAt": "2016-09-16T10:24:43.236431157Z",
        "UpdatedAt": "2016-09-16T10:24:43.238035043Z",
        "Spec": {
            "Name": "mytest",
            "TaskTemplate": {
                "ContainerSpec": {
                    "Image": "nginx"
                },
                "Resources": {
                    "Limits": {},
                    "Reservations": {}
                },
                "RestartPolicy": {
                    "Condition": "any",
                    "MaxAttempts": 0
                },
                "Placement": {}
            },
            "Mode": {
                "Replicated": {
                    "Replicas": 1
                }
            },
            "UpdateConfig": {
                "Parallelism": 1,
                "FailureAction": "pause"
            },
            "Networks": [
                {
                    "Target": "5glt9tb0yaoqz8l89mp3jdrkc"
                }
            ],
            "EndpointSpec": {
                "Mode": "vip",
                "Ports": [
                    {
                        "Protocol": "tcp",
                        "TargetPort": 80,
                        "PublishedPort": 8080
                    }
                ]
            }
        },
        "Endpoint": {
            "Spec": {
                "Mode": "vip",
                "Ports": [
                    {
                        "Protocol": "tcp",
                        "TargetPort": 80,
                        "PublishedPort": 8080
                    }
                ]
            },
            "Ports": [
                {
                    "Protocol": "tcp",
                    "TargetPort": 80,
                    "PublishedPort": 8080
                }
            ],
            "VirtualIPs": [
                {
                    "NetworkID": "ba71d2djs4vvsdvsrcfltbktr",
                    "Addr": "10.255.0.4/16"
                },
                {
                    "NetworkID": "5glt9tb0yaoqz8l89mp3jdrkc",
                    "Addr": "10.0.1.2/24"
                }
            ]
        },
        "UpdateStatus": {
            "StartedAt": "0001-01-01T00:00:00Z",
            "CompletedAt": "0001-01-01T00:00:00Z"
        }
    }
]

docker.service 调试输出:

Sep 16 12:26:19 primapp03 docker[25944]: time="2016-09-16T12:26:19.387872821+02:00" level=debug msg="/usr/sbin/iptables, [--wait -t nat -L DOCKER-INGRESS]"
Sep 16 12:26:19 primapp03 docker[25944]: time="2016-09-16T12:26:19.390079278+02:00" level=debug msg="/usr/sbin/iptables, [--wait -t nat -C DOCKER-INGRESS -j RETURN]"
Sep 16 12:26:19 primapp03 docker[25944]: time="2016-09-16T12:26:19.391680179+02:00" level=debug msg="/usr/sbin/iptables, [--wait -t nat -C OUTPUT -m addrtype --dst-type LOCAL -j DOCKER-INGRESS]"
Sep 16 12:26:19 primapp03 docker[25944]: time="2016-09-16T12:26:19.394019719+02:00" level=debug msg="/usr/sbin/iptables, [--wait -t nat -C PREROUTING -m addrtype --dst-type LOCAL -j DOCKER-INGRESS]"
Sep 16 12:26:19 primapp03 docker[25944]: time="2016-09-16T12:26:19.396305291+02:00" level=debug msg="/usr/sbin/iptables, [--wait -t nat -C POSTROUTING -m addrtype --src-type LOCAL -o docker_gwbridge -j MASQUERADE]"
Sep 16 12:26:19 primapp03 docker[25944]: time="2016-09-16T12:26:19.398715424+02:00" level=debug msg="/usr/sbin/iptables, [--wait -t nat -L DOCKER-INGRESS]"
Sep 16 12:26:19 primapp03 docker[25944]: time="2016-09-16T12:26:19.401384962+02:00" level=debug msg="/usr/sbin/iptables, [--wait -t nat -I DOCKER-INGRESS -p tcp --dport 8080 -j DNAT --to-destination 172.19.0.2:8080]"
Sep 16 12:26:19 primapp03 docker[25944]: time="2016-09-16T12:26:19.404212138+02:00" level=debug msg="Creating service for vip 10.255.0.4 fwMark 259 ingressPorts []*libnetwork.PortConfig{&libnetwork.PortConfig{Name: \"\",\nProtocol: 0,\nTargetPort: 0x50,\nPublishedPort: 0x1f90,\n}}"
Sep 16 12:26:19 primapp03 docker[25944]: time="2016-09-16T12:26:19+02:00" level=info msg="Firewalld running: false"
Sep 16 12:26:19 primapp03 docker[25944]: time="2016-09-16T12:26:19+02:00" level=error msg="setting up rule failed, [-t nat -A POSTROUTING -m ipvs --ipvs -d 10.255.0.0/16 -j SNAT --to-source 10.255.0.2]:  (iptables failed: iptables --wait -t nat -A POSTROUTING -m ipvs --ipvs -d 10.255.0.0/16 -j SNAT --to-source 10.255.0.2: iptables: No chain/target/match by that name.\n (exit status 1))"
Sep 16 12:26:19 primapp03 docker[25944]: time="2016-09-16T12:26:19.435268378+02:00" level=error msg="Failed to add firewall mark rule in sbox /var/run/docker/netns/be3e41082632: reexec failed: exit status 5"
Sep 16 12:26:19 primapp03 docker[25944]: time="2016-09-16T12:26:19.435677746+02:00" level=error msg="Failed to create real server 10.255.0.5 for vip 10.255.0.4 fwmark 259 in sb ingress-sbox: no such process"

我和@virtuman和@ummecasino 有同样的问题。 当我使用docker service create --publish ...创建服务时,firewalld 显示:

ERROR: COMMAND_FAILED: '/sbin/iptables -w2 -t nat -C POSTROUTING -m ipvs --ipvs -d 10.255.0.0/16 -j SNAT --to-source 10.255.0.8' failed: iptables: No chain/target/match by that name.

而且,我无法连接到本地主机之外的服务。 除了关闭firewalld之外,我如何让它工作?

https://github.com/docker/docker/issues/16816#issuecomment -197397543

对我来说,我做同样的事情,除了我指定过滤器而不是 nat。

重新启动 docker 对我有用。 当我关闭firewalld时出现问题。 重启 docker 会更新 iptable 规则

我对 iptables 有类似的问题。 我正在使用 Nginx 和 Django 运行一个容器对。 我注意到我的网站响应非常慢(20 秒),所以我想用 docker-compose 重新启动容器:

[root<strong i="6">@cvast</strong> cvast]# docker-compose down
[...]
[root<strong i="7">@cvast</strong> cvast]# docker-compose up -d
Creating network "cvast_default" with the default driver
ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule:  (iptables failed: iptables --wait -t nat -I DOCKER -i br-bff977f9efd3 -j RETURN: iptables: No chain/target/match by that name.
 (exit status 1))

我只试过这个,它马上就修好了:

systemctl restart docker.service

一些调试信息:

[vincent<strong i="14">@cvast</strong> ~]$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.2 (Maipo)
[vincent<strong i="17">@cvast</strong> ~]$ uname -a
Linux cvast 3.10.0-327.36.1.el7.x86_64 #1 SMP Wed Aug 17 03:02:37 EDT 2016 x86_64 x86_64 x86_64 GNU/Linux



md5-6c4d25930a3973c0e452ca3148b575fd



[vincent<strong i="18">@cvast</strong> ~]$ docker version
Client:
 Version:      1.12.1
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   23cf638
 Built:
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.1
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   23cf638
 Built:
 OS/Arch:      linux/amd64

这对我来说并不熟悉,所以我希望任何人都可以向我解释发生了什么和/或这是否是我所做的。 我的防火墙由我工作的大学管理; 这可能是他们改变的东西吗? 我的网站速度慢与此有关吗? 重新启动 docker.service 后,它现在像往常一样快。

非常感谢你!

@veuncent docker在启动时在 IPTables 规则中创建 docker 链; 如果其他系统(例如 firewalld)在 docker 启动后正在删除这些规则,则可能会发生此错误。 确保我启动了 _after_ firewalld 的 docker 守护进程。

还 ping @aboch ,因为我认为最近处理此错误的方式发生了一些变化。

今天测试了这个修复: https ://github.com/docker/libnetwork/pull/1658

我们正在点击“无法删除 FORWARD 链中 DOCKER-ISOLATION 规则的跳转:(iptables failed: iptables --wait -D FORWARD -j DOCKER-ISOLATION: iptables: No chain/target/match by that name.)在 Centos7 上间歇性地.3 多次运行“docker-compose up”时。#1658 为我们解决了这个问题。

固定的 ?

你好

我用docker-compose命令启动了elasticSerach、logstash和Kibana并正常运行了几个小时,然后ELK就不能正常工作了。 所以我尝试重新启动 docker elasticSearch 或 logstatsh 或 Kibana 但遇到了类似的问题。

重现问题的步骤:

  1. 使用 docker-compose 启动 ELK docker
  2. 在 Kibana 仪表板中观察到的数据加载停止
  3. 尝试重启 docker elasticSearch 或者 logstash 或者 Kibana,然后遇到下面提到的结果。
  4. 如果运行 _sudo service docker restart_ 命令,则可以再次启动 ELK

描述您收到的结果:
来自守护进程的错误响应:无法重新启动容器:驱动程序在端点 dockerelk_elasticsearch_1 上编程外部连接失败:(iptables 失败:iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9300 -j DNAT --to-destination 172.18.0.2:9300 ! -i:iptables:没有该名称的链/目标/匹配。

描述您预期的结果:
Docker可以正常运行,没有这个问题,不需要重启。

您认为重要的其他信息(例如问题仅偶尔发生):
正常运行几个小时后出现问题。

docker version的输出:

Client:
 Version:      17.03.1-ce
 API version:  1.27
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Mon Mar 27 17:07:28 2017
 OS/Arch:      linux/amd64

Server:
 Version:      17.03.1-ce
 API version:  1.27 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Mon Mar 27 17:07:28 2017
 OS/Arch:      linux/amd64
 Experimental: false

docker info的输出:

Containers: 8
 Running: 0
 Paused: 0
 Stopped: 8
Images: 5
Server Version: 17.03.1-ce
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 77
 Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
init version: 949e6fa
Kernel Version: 3.16.0-4-amd64
Operating System: Debian GNU/Linux 8 (jessie)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 3.866 GiB

其他环境详细信息(AWS、VirtualBox、物理等):
unname -a
Linux scav-dev.fordme.com 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u1 (2016-09-03) x86_64 GNU/Linux

openSUSE Tumbleweed 也会出现问题。

但,

ip link delete docker0
systemctl restart docker

也解决了。

https://github.com/docker/libnetwork/pull/1658已合并到 docker 17.03.2 并包含在 docker 17.04.0 及更高版本中,应该可以解决这方面的问题。 不幸的是,此问题已成为可能或可能不相关的问题的集合,因此修复可能无法解决此消息的所有出现(例如,在 docker 运行时删除 IPTables 规则的firewalld仍然可以一个问题)

防火墙删除 DOCKER 的规则
做一些 systemctl restart docker 来解决的事情

大家好!

我遇到了这个问题,发现在运行我的防火墙脚本后它会删除 DOCKER 链,为什么会出现这个错误......所以,当重新启动 docker 服务时,它会解决这个问题,因为 docker 重新创建了使用的链它的服务。

修理:

service docker stop
service docker start

但是,如果在运行任何创建容器命令 docker 检查是否有它的链或重新创建它,那就太好了。

有可能更新吗?

很抱歉无法通过拉取请求做出贡献。

大家好,

我遇到了同样的问题,它为我解决了。

输入以下命令,它将清除所有链。

iptables -t filter -F

iptables -t filter -X

然后使用以下命令重新启动 Docker 服务

systemctl restart docker

我希望它会奏效。

@Rajesh-jai

我建议你不要刷新也不要删除你的防火墙规则......除非你知道你在做什么。

重新启动 docker 将重新创建允许您访问容器的规则,而无需刷新和删除所有 iptables 规则。

小心点。 你可能会让你的服务器太开放。

干杯!

在 centos7.1 和 docker 1.10.3-46 中,我重新启动 docker 服务然后解决问题。

我可以使用以下步骤始终如一地复制问题:

Ob CentOS Linux 发行版 7.3.1611 (Core)

  1. 添加/更改 iptables 规则
  2. 重启iptables
  3. 重新启动映射到本地端口的容器

我收到以下错误:

ERROR: for webfront  Cannot restart container 4cf3aa80c0ca093f311b064c4318477e0d64654e0e3b2921f2e130b3004fe125: driver failed programming external connectivity on endpoint webfront (db42a8b5113b0ed0386a7232004144ba3ee0464eeeee205e04eeac9c19ddad04): iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 127.0.0.1 --dport 8093 -j DNAT --to-destination 172.21.0.7:80 ! -i br-1b5d4184a095: iptables: No chain/target/match by that name.
 (exit status 1)

一种解决方法是禁用此处描述的防火墙集成 (?): https ://github.com/moby/moby/issues/1871#issuecomment -238761325

方便的脚本

docker_rm_all () {
    for c in `docker ps -a | awk '{ print $1 }'`; do
        if [[ "$c" == "CONTAINER" ]];then
            echo "Removing all in 2 seconds. Last chance to cancel.";
            sleep 2;
        else
            docker rm -f $c;
        fi
    done
}

docker_kill_all () {
    for c in `docker ps | awk '{ print $1 }'`; do
        if [[ "$c" == "CONTAINER" ]];then
            echo "Removing all in 2 seconds. Last chance to cancel.";
            sleep 2;
        else
            docker kill $c;
        fi
    done
}

docker_bash () {
    docker exec -ti $1 bash;
}

docker_service_restart ()
{
    if [[ "$1" == "" ]]; then
        echo "please set HTTP_ENV before restart"
        exit 1
    fi

    sudo https_proxy="$1" \
         http_proxy="$1" \
         HTTP_PROXY="$1" \
         HTTPS_PROXY="$1" \
         service docker restart
}

set_proxy () {
    export HTTP_PROXY=http://$1
    export HTTPS_PROXY=https://$1
    export http_proxy=http://$1
    export https_proxy=https://$1
}


unset_proxy () {
    unset HTTP_PROXY
    unset HTTPS_PROXY
    unset http_proxy
    unset https_proxy
}

只需将其添加到您的 bashrc

# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core)
# docker version
Client:
 Version:      17.05.0-ce
 API version:  1.29
 Go version:   go1.7.5
 Git commit:   89658be
 Built:        Thu May  4 22:06:25 2017
 OS/Arch:      linux/amd64

Server:
 Version:      17.05.0-ce
 API version:  1.29 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   89658be
 Built:        Thu May  4 22:06:25 2017
 OS/Arch:      linux/amd64
 Experimental: false

日记本:

Jan 23 16:27:34 localhost.localdomain kernel: br0: port 3(veth159) entered blocking state
Jan 23 16:27:34 localhost.localdomain kernel: br0: port 3(veth159) entered forwarding state
Jan 23 16:27:34 localhost.localdomain kernel: IPv6: ADDRCONF(NETDEV_CHANGE): veth50b629e: link becomes ready
Jan 23 16:27:34 localhost.localdomain kernel: docker_gwbridge: port 2(veth50b629e) entered blocking state
Jan 23 16:27:34 localhost.localdomain kernel: docker_gwbridge: port 2(veth50b629e) entered forwarding state
Jan 23 16:27:34 localhost.localdomain kernel: br0: port 3(veth159) entered disabled state
Jan 23 16:27:34 localhost.localdomain firewalld[638]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C POSTROUTING -m ipvs --ipvs -d 10.255.0.0/16 -j SNAT --to-source 10.255.0.2' failed: iptables: No chain/target/match by that name.
Jan 23 16:27:34 localhost.localdomain kernel: IPVS: __ip_vs_del_service: enter
Jan 23 16:27:34 localhost.localdomain kernel: docker_gwbridge: port 2(veth50b629e) entered disabled state
Jan 23 16:27:34 localhost.localdomain kernel: docker_gwbridge: port 2(veth50b629e) entered disabled state

嗨,大家好,

我在使用 iptables 时遇到错误。

Error response from daemon: Cannot start container 5f358335562f6e0234ec7fea50f9c5cb6a0b44ec16a6c2f09825fe8ce560a135: iptables failed: iptables -t nat -A DOCKER -p tcp -d 0/0 --dport 80 -j DNAT --to-destination 172.17.0.7:80 ! -i docker0: iptables: No chain/target/match by that name.
 (exit status 1)

猫 /etc/centos-release

CentOS release 6.9 (Final)

iptables --版本

iptables v1.4.7

码头工人信息

Containers: 3
Images: 37
Storage Driver: devicemapper
 Pool Name: docker-253:0-400615-pool
 Pool Blocksize: 65.54 kB
 Backing Filesystem: extfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 1.886 GB
 Data Space Total: 107.4 GB
 Data Space Available: 41.53 GB
 Metadata Space Used: 2.626 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.145 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.117-RHEL6 (2016-12-13)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 2.6.32-431.29.2.el6.x86_64
Operating System: <unknown>
CPUs: 4
Total Memory: 7.684 GiB
Name: acd-web01
ID: VN4G:PLDV:YQ34:B22N:MRET:AUNA:5IGA:DZ66:R6TW:T24B:XWNI:RB7K

@vagnerfonseca CentOS 6 和内核 2.6.x 已经很久没有得到支持了(最后一个支持 docker 的版本是 Docker 1.7,它是三年前发布的,很久以前就已经结束了。

如果要运行 Docker,请确保更新到当前支持的 CentOS 7 版本

就我而言(Manjaro Linux),这是因为 iptables 根本没有运行。 我必须添加 docker daemon 选项 --iptables=false 以禁用与它的任何交互。

当我的默认防火墙区域以某种方式从“家庭”更改为“公共”时,我遇到了这个问题。 我通过将默认设置更改回主页,重新启动 firewalld,然后刷新 iptables 来解决它:

firewall-cmd --set-default-zone=home
firewall-cmd --reload
systemctl restart firewalld
iptables -F

添加我的 +1。

运行 Arch Linux。

Containers: 1
 Running: 0
 Paused: 0
 Stopped: 1
Images: 3
Server Version: 18.05.0-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 773c489c9c1b21a6d78b5c538cd395416ec50f88
runc version: 4fc53a81fb7c994640722ac585fa9ca548971871
init version: 949e6fa
Security Options:
 seccomp
  Profile: default
Kernel Version: 4.14.52-1-lts
Operating System: Arch Linux
OSType: linux
Architecture: x86_64
CPUs: 6
Total Memory: 11.72GiB
Name: mephisto
ID: BRRC:XMKV:WWAM:77LE:35HV:JGCX:P3MS:QZQX:3GOC:REIC:53Y4:ZEHL
Docker Root Dir: /home/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

我安装iptables ,但没有安装firewalld

Jul 31 13:24:56 mephisto docker[18190]: /usr/bin/docker: Error response from daemon: driver failed programming external connectivity on endpoint proxy.service (c78e90b3b41c831de60a048d0dcfd73de325e91b2f3c048b27c848ced4972b43):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8080 -j DNAT --to-destination 172.17.0.2:8080 ! -i docker0: iptables: No chain/target/match by that name.

到目前为止,唯一的解决方法是使用--net=host ,这不一定是可取的。

就我而言(Manjaro Linux),这是因为 iptables 根本没有运行。 我必须添加 docker daemon 选项 --iptables=false 以禁用与它的任何交互。

iptables 让我很伤心(在 Manjaro 上,所以最终我停止了它并按照你的示例设置 iptables:false。这对我有用。(如果它失败了,我接下来会尝试 net=host,或者求助于将 Docker 放入虚拟机)

我遇到了这个警告

11 月 18 日 18:42:43 localhost.localdomain firewalld[20080]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C FORWARD -o docker0 -j DOCKER' failed: iptables: No chain/target /匹配那个名字。
11 月 18 日 18:42:43 localhost.localdomain firewalld[20080]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT ' 失败:iptables:错误规则(该链中是否存在匹配规则?)。
11 月 18 日 18:42:43 localhost.localdomain firewalld[20080]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2' 失败:iptables:没有该名称的链/目标/匹配。
11 月 18 日 18:42:43 localhost.localdomain firewalld[20080]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP' 失败: iptables:错误规则(该链中是否存在匹配规则?)。
11 月 18 日 18:42:52 localhost.localdomain firewalld[20080]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C DOCKER -p tcp -d 0/0 --dport 6379 -j DNAT --to-destination 172.17.0.2:6379 ! -i docker0' 失败:iptables:没有该名称的链/目标/匹配。
11 月 18 日 18:42:52 localhost.localdomain firewalld[20080]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C DOCKER ! -i docker0 -o docker0 -p tcp -d 172.17.0.2 --dport 6379 -j ACCEPT' failed: iptables: Bad rule (该链中是否存在匹配规则?)。
11 月 18 日 18:42:52 localhost.localdomain firewalld[20080]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C POSTROUTING -p tcp -s 172.17.0.2 -d 172.17.0.2 -- dport 6379 -j MASQUERADE' 失败:iptables:没有该名称的链/目标/匹配。
11 月 18 日 18:43:31 localhost.localdomain firewalld[20080]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C DOCKER -p tcp -d 0/0 --dport 27017 -j DNAT --to-destination 172.17.0.3:27017 ! -i docker0' 失败:iptables:没有该名称的链/目标/匹配。
11 月 18 日 18:43:31 localhost.localdomain firewalld[20080]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C DOCKER ! -i docker0 -o docker0 -p tcp -d 172.17.0.3 --dport 27017 -j ACCEPT' failed: iptables: Bad rule (该链中是否存在匹配规则?)。
11 月 18 日 18:43:31 localhost.localdomain firewalld[20080]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C POSTROUTING -p tcp -s 172.17.0.3 -d 172.17.0.3 -- dport 27017 -j MASQUERADE' 失败:iptables:没有该名称的链/目标/匹配。

尝试通过运行在 iptables 中创建链
iptables -N DOCKER

如果这不起作用,请尝试升级 docker 和 iptables

我已经通过键入解决了这个问题
service iptables restartservice docker restart 。 希望能帮助到你。

你好呀。
我正在运行虚拟机
信息:

   Static hostname: n/a
Transient hostname: aIP-OF-MY-MACHINE
         Icon name: computer-vm
           Chassis: vm
        Machine ID: d4047bd0916d41d38b6b97ff7b5f2b3d
           Boot ID: 61456d6912e24569985f0e9343bd8179
    Virtualization: qemu
  Operating System: openSUSE Tumbleweed
       CPE OS Name: cpe:/o:opensuse:tumbleweed:20200817
            Kernel: Linux 5.8.0-1-default
      Architecture: x86-64

码头工人版本:

Client:
 Version:           19.03.12
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        48a66213fe17
 Built:             Mon Aug  3 00:00:00 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          19.03.12
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       48a66213fe17
  Built:            Mon Aug  3 00:00:00 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.1.5_catatonit
  GitCommit:

所以,我花了将近 1 周的时间来解决这个问题!
我的主要问题是我检测到我的 VPS 有一些随机断开连接,断开连接会影响所有端口,失去所有访问权限!
我做了一些研究,我在 ```/var/log/firewalld 日志中发现了我将在下面提到的问题
输出:

...
2020-09-15 01:21:23 WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -X DOCKER-ISOLATION' failed: iptables: No chain/target/match by that name.
2020-09-15 01:21:23 WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -D FORWARD -i docker0 -o docker0 -j DROP' failed: iptables: Bad rule (does a matching rule exist in that chain?).
2020-09-15 01:21:26 WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -D FORWARD -i docker0 -o docker0 -j DROP' failed: iptables: Bad rule (does a matching rule exist in that chain?).
...

我已经执行了这个命令:

iptables -t filter -F
iptables -t filter -X

然后使用以下命令重新启动 Docker 服务

ip link delete docker0
systemctl restart docker

我试图制作一些这样的命令,并卸载了 docker 以删除 dockers 配置...
没有太多成功...👎...

可悲的是,这正在发生! 我在生产环境中有一些工作要做

此页面是否有帮助?
0 / 5 - 0 等级