Nacos是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它提供以下核心功能: - 服务发现与服务健康监测 - 动态配置服务 - 动态DNS服务 - 服务及其元数据管理
docker pull nacos/nacos-server:2.2.4
docker run -d \
--name nacos \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--env MODE=standalone \
--restart=always \
nacos/nacos-server:2.2.4
# 节点1
docker run -d \
--name nacos1 \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--env MODE=cluster \
--env NACOS_SERVERS="nacos1:8848 nacos2:8848 nacos3:8848" \
--env PREFER_HOST_MODE=hostname \
--env NACOS_SERVER_PORT=8848 \
--env NACOS_APPLICATION_PORT=8848 \
--restart=always \
nacos/nacos-server:2.2.4
# 节点2和节点3类似,修改name和端口映射即可
环境变量 | 说明 | 示例值 |
---|---|---|
MODE | 运行模式(standalone/cluster) | standalone |
NACOS_SERVERS | 集群节点列表(集群模式使用) | "nacos1:8848 nacos2:8848" |
PREFER_HOST_MODE | 是否支持hostname(集群模式使用) | hostname |
NACOS_SERVER_PORT | Nacos服务端口 | 8848 |
NACOS_APPLICATION_PORT | Nacos应用端口 | 8848 |
SPRING_DATASOURCE_PLATFORM | 数据库平台 | mysql |
MYSQL_SERVICE_HOST | MySQL主机地址 | 192.168.1.100 |
MYSQL_SERVICE_PORT | MySQL端口 | 3306 |
MYSQL_SERVICE_DB_NAME | 数据库名 | nacos |
MYSQL_SERVICE_USER | 数据库用户名 | nacos |
MYSQL_SERVICE_PASSWORD | 数据库密码 | nacos |
JVM_XMS | JVM初始堆内存 | 1g |
JVM_XMX | JVM最大堆内存 | 1g |
JVM_XMN | JVM年轻代大小 | 512m |
docker run -d \
--name nacos \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--env MODE=standalone \
--env SPRING_DATASOURCE_PLATFORM=mysql \
--env MYSQL_SERVICE_HOST=your_mysql_host \
--env MYSQL_SERVICE_PORT=3306 \
--env MYSQL_SERVICE_DB_NAME=nacos \
--env MYSQL_SERVICE_USER=nacos \
--env MYSQL_SERVICE_PASSWORD=nacos \
-v /your_path/nacos/logs:/home/nacos/logs \
--restart=always \
nacos/nacos-server:2.2.4
http://你的服务器IP:8848/nacos
问题现象:容器启动后立即退出
解决方案:
- 检查日志:docker logs nacos
- 常见原因:内存不足,尝试增加JVM内存参数:
bash
--env JVM_XMS=1g --env JVM_XMX=1g --env JVM_XMN=512m
问题现象:浏览器无法打开8848端口
解决方案:
- 检查防火墙是否开放8848、9848、9849端口
- 检查容器是否正常运行:docker ps -a
- 检查端口映射是否正确:docker port nacos
问题现象:集群节点日志显示无法连接其他节点
解决方案:
- 确保NACOS_SERVERS配置正确
- 确保PREFER_HOST_MODE=hostname时,容器名称能解析为正确IP
- 检查网络是否互通,尝试使用--network host
模式
问题现象:日志显示数据库连接失败
解决方案: - 检查MySQL服务是否正常运行 - 检查数据库用户名密码是否正确 - 确保MySQL用户有远程连接权限 - 初始化数据库表结构(Nacos提供SQL脚本)
问题现象:客户端无法连接服务端
解决方案: - Nacos 2.x版本客户端与服务端必须版本匹配 - 确保客户端SDK版本与服务端版本一致
# 停止并删除容器
docker stop nacos && docker rm nacos
# 删除镜像(可选)
docker rmi nacos/nacos-server:2.2.4
# 删除数据卷(如果有)
docker volume prune
通过以上步骤,您应该已经成功在Docker中部署了Nacos 2.2.4。如有其他问题,可以参考Nacos官方文档或社区讨论。