本文介绍如何在docker容器下安装部署nacos2.0之后版本的注意事项
前两天在用远程服务器通过docker拉取nacos2.1.0是遇到了这样一个错误,我的nacos容器创建创建成功了,并且nacos客户端也可与成功访问。但是在注册服务的时候报错了,服务于客户端连接失败。报错信息在最后面。
其原因是就是在nacos2.0之后的版本中加入了gRPC通讯
Nacos2.0版本相比1.X新增了gRPC的通信方式,因此需要增加2个端口。新增端口是在配置的主端口(server.port)基础上,进行一定偏移量自动生成。
端口 | 与主端口的偏移量 | 描述 |
9848 | 1000 | 客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求 |
9849 | 1001 | 服务端gRPC请求服务端端口,用于服务间同步等 |
在我第一次创建nacos容器时,释放了nacos的原始的8848端口(错误命令)
操作命令
docker run --name nacos -p 8848:8848 -e MODE=standalone -e PREFER_HOST_MODE=hostname -d nacos/nacos-server:v2.1.0
才导致了,下面的报错
而正常的命令则是将偏移量的两个端口,和原始端口都释放(正确命令)
操作命令
拉取镜像:后边可以跟上版本号,我这里以v2.1.0的举例
docker pull nacos/nacos-server:v2.1.0
创建容器:开发8848、9848、9849端口
docker run --name nacos -p 8848:8848 -p 9848:9848 -p 9849:9849 -e MODE=standalone -e PREFER_HOST_MODE=hostname -d nacos/nacos-server:v2.1.0
查看容器
docker ps
或
docker ps -a
这边我们看到容器创建成功了,我们可以通过 Ip:8848 访问一下,看是否成功
然后启动服务,就可以成功注册到nacos了
这里强调一下所说的nacos客户端的版本值是spring-cloud-starter-alibaba-nacos-discovery下的
我们docker拉取的版本最好和这个版本保持一致
报错信息:
Caused by: com.alibaba.nacos.api.exception.NacosException: Client not connected, current status:STARTING
Caused by: com.alibaba.nacos.api.exception.NacosException: Request nacos server failed:
Caused by: java.lang.reflect.UndeclaredThrowableException: null