問題:
在啟動docker的容器時,出現(xiàn)報(bào)錯:Error response from daemon: driver failed programming external connectivity on endpoint XXX(端口映射或啟動容器時報(bào)錯)
原因:
在我們啟動了Docker后,我們再對防火墻firewalld進(jìn)行操作,就會發(fā)生上述報(bào)錯,
詳細(xì)原因:
docker服務(wù)啟動時定義的自定義鏈DOCKER,當(dāng) centos7 firewall 被清掉時,
firewall的底層是使用iptables進(jìn)行數(shù)據(jù)過濾,建立在iptables之上,這可能會與 Docker 產(chǎn)生沖突。
當(dāng) firewalld 啟動或者重啟的時候,將會從 iptables 中移除 DOCKER 的規(guī)則,從而影響了 Docker 的正常工作。
當(dāng)你使用的是 Systemd 的時候, firewalld 會在 Docker 之前啟動,但是如果你在 Docker 啟動之后操作 firewalld ,你就需要重啟 Docker 進(jìn)程了。
解決:
輸入指令? systemctl restart docker? ? ?重啟docker服務(wù)及可重新生成自定義鏈DOCKER