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.
解决方案
方案一:
一开始以为是防火墙的问题,进行了如下的操作
- 关闭防火墙
systemctl stop firewalld
- 将端口加入到防火墙中
firewall-cmd --zone=public --add-port=9848/tcp --permanent
- 重启防火墙
firewall-cmd --reload
- 再次执行指令,发现还有问题
方案二:
翻阅资料发现自己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
后续: 如上所示:重新指令该指令成功。