错误报告信息
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
:
Linux
环境详细信息(AWS、VirtualBox、物理等):
身体的
iptables 版本 1.4.21
重现性如何:
随机的
重现步骤:
实际结果:
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。
你好!
请阅读有关创建问题的重要信息。
如果您要报告新问题,请确保我们没有任何已打开的重复问题。 您可以通过搜索此存储库的问题列表来确保这一点。 如果有重复,请关闭您的问题并改为对现有问题添加评论。
如果您怀疑您的问题是错误,请编辑您的问题描述以包含如下所示的错误报告信息。 如果您未能在 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
我可以向您发送什么信息?
我也有同样的错误
当我停止防火墙后重新启动容器时会出现此问题
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、物理等):
列出重现问题的步骤:
描述您收到的结果:
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
列出重现问题的步骤:
描述您收到的结果:
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 但遇到了类似的问题。
重现问题的步骤:
描述您收到的结果:
来自守护进程的错误响应:无法重新启动容器
描述您预期的结果:
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)
我收到以下错误:
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 restart
和service 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 配置...
没有太多成功...👎...
可悲的是,这正在发生! 我在生产环境中有一些工作要做
最有用的评论
与@shayts7所描述的问题完全相同。 目前的解决方法是重新启动守护程序: