docker: Error response from daemon: driver failed programming external connectivity on endpoint tomcat1 (9d06342addfe339a1bbf0876ae4534410f58cc65fa0b3b6516f282224af68202): (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. (exit status 1)).
1.错误重现
- 服务器环境:CentOS7.9
- 进行实验:Docker启动Tomcat容器,端口出现问题
1.1 错误场景
当我在使用 docker 运行 tomcat 容器的时候,爆出了如下的错误
docker: Error response from daemon: driver failed programming external connectivity
on endpoint tomcat1 (9d06342addfe339a1bbf0876ae4534410f58cc65fa0b3b6516f282224af68202)
: (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.
(exit status 1)).
仔细一看,应该是有关 iptables 的规则问题,然后 8080端口出现了 destination 即定义出口的问题,然后不满足 iptables规则问题,而 iptables 是 firewalld防火墙的内部实现方式,属于更底层的防火墙规则
1.2 检查排错过程
- 首先检查一下是否存在端口占用
[root@d ~]# netstat -tunlp | grep 8080
发现并没有端口占用 8080,说明不是端口占用的问题,然后需要排查 防火墙问题
[root@d ~]# firewall-cmd --list-all --zone=trusted
trusted (active)
target: ACCEPT
icmp-block-inversion: no
interfaces: ens33
sources:
services:
ports: 8080/tcp 80/tcp 6379/tcp 4369/tcp 25672/tcp 15672/tcp 5672/tcp 8100/tcp 5673/tcp 2184/tcp 2185/tcp 2186/tcp 9092/tcp 9093/tcp 9094/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
防火墙也确实是放行了 8080 端口,防火墙也应该没有问题,但是报错显示 iptables 的防火墙规则,因为 firewalld 是 iptables 的上层应用,所以我们重启一下 firewalld,进行测试
[root@d ~]# systemctl start firewalld.service
还需要重启一下 docker,因为这是与 docker 相关的 iptables 规则,我们要重新启动,生成新的规则
[root@d ~]# systemctl restart docker
然后再次创建 tomcat 容器文章来源:https://www.toymoban.com/news/detail-435070.html
[root@d ~]# docker run -id --name tomcat1 -p 8080:8080 tomcat:7-jre7 /bin/bash
a874d7e2fb26c3e8f8b8ab09eb9f2823d7d4a0151eea12665675312bdf0fe411
[root@d ~]# docker ps | grep tomcat1
a874d7e2fb26 tomcat:7-jre7 "/bin/bash" 24 minutes ago Up 24 minutes 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp tomcat1
此时说明 tomcat 容器创建成功,没有爆出对应的错误
文章来源地址https://www.toymoban.com/news/detail-435070.html
到了这里,关于docker: Error response from daemon: driver failed programming external connectivity on endpoint tomc的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!