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 个解决方案
可能是网络的问题,我通过以下方式来解决的,首先在容器内部 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 镜像,就可以看到该端口能过正常映射了