docker 启动容器时,映射端口报错,如何解决?

今天在启动 nginx 容器时,因为为 nginx 配置了 https, 需要多映射一个端口 443, 结果报错了:

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

1 个解决方案

AllenJiang
中间件研发,关注微信公众号 : 小哈学Java, 回复"666", 即可免费领取10G学习&面试资料

可能是网络的问题,我通过以下方式来解决的,首先在容器内部 ping 宿主机,看是否能够 ping 通,如果能够 ping 通,可以通过重建 docker0 网络来恢复:

1. pkill docker # 先停掉 docker 服务
2. iptables -t nat -F 
3. ifconfig docker0 down 
4. brctl delbr docker0 
5. docker -d 
6. systmctl restart docker # 重启 docker 服务

再次 run 镜像,就可以看到该端口能过正常映射了