在关闭并放置centos 的防火墙重启之后【操作:https://www.cnblogs.com/sxdcgaq8080/p/10032829.html】
启动docker容器就发现开始报错:
[root@localhost elasticSearch]# docker run -d --name es2-node -p 9201:9200 -p 9301:9300 --restart=always -v /apps/elasticSearch/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /apps/elasticSearch/es2_data:/usr/share/elasticsearch/data elasticsearch:5.6.9
a357eb4b695a6fec33f2093267bfe0015acb35fbb81688dd336ed30336e8bd9f
docker: Error response from daemon: driver failed programming external connectivity on endpoint es2-node (38cbd7b4a49c5f32f6ac8f0bf4a4bdf158e50e728b12ba5bbe801f741fc78003): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9301 -j DNAT --to-destination 172.17.0.2:9300 ! -i docker0: iptables: No chain/target/match by that name.
(exit status 1)).
但是 实际上并没有冲突的容器存在。
实际原因:
docker服务启动时定义的自定义链DOCKER由于某种原因被清掉
重启docker服务及可重新生成自定义链DOCKER
解决方法:
启动 systemctl start docker
守护进程重启 sudo systemctl daemon-reload
重启docker服务 systemctl restart docker
重启docker服务 sudo service docker restart
关闭docker service docker stop
关闭docker systemctl stop docker