docker 启动nocas指令错误 iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d

17 阅读1分钟

docker启动nocas,nocas错误提示

启动指令: docker run -d -p 8848:8848 -p 9848:9848 -p 9849:9849 --name nacos --restart always --env MODE=standalone --env SPRING_DATASOURCE_PLATFORM=Mariadb --env MYSQL_SERVICE_HOST=192.x.x.24 --env MYSQL_SERVICE_PORT=3307 --env MYSQL_SERVICE_DB_NAME=nacos --env MYSQL_SERVICE_USER=root --env MYSQL_SERVICE_PASSWORD=9qqUtL8&H0SrxSQ1 nacos/nacos-server:2.0.3

错误提示: Error response from daemon: driver failed programming external connectivity on endpoint nacos (f604593cb1bb147e2f3a2d1192d85a0b0d9de064a965ff3182d9d56d8e34a0eb): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9849 -j DNAT --to-destination 192.x.x.24:9849 ! -i docker0: iptables: No chain/target/match by that name.

解决方案

方案一:

一开始以为是防火墙的问题,进行了如下的操作

  1. 关闭防火墙systemctl stop firewalld
  2. 将端口加入到防火墙中firewall-cmd --zone=public --add-port=9848/tcp --permanent
  3. 重启防火墙firewall-cmd --reload
  4. 再次执行指令,发现还有问题

方案二:

翻阅资料发现自己mysql中的密码中带有特殊符号“&”,无法识别,Docker命令中,"&"字符需要被转义为"&",以避免被解释为后台运行符号 如下:

 docker run -d -p 8848:8848 -p 9848:9848 -p 9849:9849 --name nacos --restart always --env MODE=standalone --env SPRING_DATASOURCE_PLATFORM=Mariadb --env MYSQL_SERVICE_HOST=192.168.120.24 --env MYSQL_SERVICE_PORT=3307 --env MYSQL_SERVICE_DB_NAME=nacos --env MYSQL_SERVICE_USER=root --env MYSQL_SERVICE_PASSWORD=9qqUtL8\&H0SrxSQ1 nacos/nacos-server:2.0.3

后续: 如上所示:重新指令该指令成功。