启动一个有 nat 映射端口的容器时,iptables 报 No chain/target/match by that name
@H_
1
2
|
docker
run
-
d
-
p
2181
:
2181
-
p
2888
:
2888
-
p
3888
:
3888
garland
/
zookeeper
Error
response
from
daemon
:
Cannot
start
container
565c06efde6cd4411e2596ef3d726817c58dd777bc5fd13762e0c34d86076b9e
:
iptables
Failed
:
iptables
--
wait
-
t
nat
-
A
DOCKER
-
p
tcp
-
d
0
/
0
--
dport
3888
-
j
DNAT
--
to
-
destination
192.168.42.11
:
3888
!
-
i
docker0
:
iptables
:
No
chain
/
target
/
match
by
that
name
|
找了N多网站和官方issue后,还是没找到真正的解决方法,网上到处转载的只是分析了原因,并没有明确的解决方案,为此与同事通宵加班终于解决了这个问题。
找到系统的/etc/sysconfig/iptables
,如果没有用以下命令保存一下,然后查看里边的内容
1
2
|
iptables
-
save
>
/
etc
/
sysconfig
/
iptables
cat
/
etc
/
sysconfig
/
iptables
|
发现内容如下
@H_
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
*
filter
:
INPUT
ACCEPT
[
0
:
0
]
:
FORWARD
ACCEPT
[
0
:
0
]
:
OUTPUT
ACCEPT
[
0
:
0
]
-
N
whitelist
-
A
whitelist
-
s
192.168.42.0
/
24
-
j
ACCEPT
#syn
-
N
syn
-
flood
-
A
INPUT
-
p
tcp
--
syn
-
j
syn
-
flood
-
I
syn
-
flood
-
p
tcp
-
m
limit
--
limit
3
/
s
--
limit
-
burst
6
-
j
RETURN
-
A
syn
-
flood
-
j
REJECT
#DOS
-
A
INPUT
-
i
eth0
-
p
tcp
--
syn
-
m
connlimit
--
connlimit
-
above
15
-
j
DROP
-
A
INPUT
-
p
tcp
-
m
state
--
state
ESTABLISHED
,
RELATED
-
j
ACCEPT
## 省略一些简单的防火墙规则
|