今天刚刚修改基于Docker服务的MySQL配置参数,准备重新加载MySQL 容器,提示如下截图的错误信息:
[root@localhost ~]# docker restart 7d98a59a8012
Error response from daemon: Cannot restart container 7d98a59a8012: driver failed programming external connectivity on endpoint mysql-slave (b3c4eb9f64c026a64a04183e3d54053e87078e51a64224e7cef54af3910ab7cd): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3308 -j DNAT --to-destination 172.17.0.2:3306 ! -i docker0: iptables: No chain/target/match by that name.
(exit status 1))
原因:Docker容器做端口映射报错,Docker服务启动时定义的自定义链DOCKER被MySQL容器重新启动指令产生冲突;需要重新启动Docker 服务和MySQL服务,构建自定义链DOCKER.
实例:
[root@localhost ~]# docker start 1906ba6bfbe1
Error response from daemon: driver failed programming external connectivity on endpoint mysql-master (fa92e62ba50f267e1b44c499bf8318e8ddbf48705ae9b62771a15061afc8f340): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3307 -j DNAT --to-destination 172.17.0.2:3306 ! -i docker0: iptables: No chain/target/match by that name.
(exit status 1))
Error: failed to start containers: 1906ba6bfbe1
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost ~]# systemctl restart docker
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7d98a59a8012 mysql:5.7 "docker-entrypoint.s…" 46 hours ago Exited (128) 2 minutes ago mysql-slave
1906ba6bfbe1 mysql:5.7 "docker-entrypoint.s…" 46 hours ago Exited (137) 8 minutes ago mysql-master
[root@localhost ~]# docker start 1906ba6bfbe1
1906ba6bfbe1
[root@localhost ~]# docker start 7d98a59a8012
7d98a59a8012
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7d98a59a8012 mysql:5.7 "docker-entrypoint.s…" 46 hours ago Up 2 seconds 33060/tcp, 0.0.0.0:3308->3306/tcp mysql-slave
1906ba6bfbe1 mysql:5.7 "docker-entrypoint.s…" 46 hours ago Up 23 seconds 33060/tcp, 0.0.0.0:3307->3306/tcp mysql-master