一、环境准备与前置条件
1.1 硬件与软件要求
Nacos2.2.0对硬件资源的要求取决于部署模式:单机模式下建议配置4核CPU、8GB内存;集群模式需根据节点数量扩展资源,每节点建议2核CPU、4GB内存。操作系统需支持Docker,推荐CentOS 7+/Ubuntu 20.04+。Docker版本需≥20.10,可通过docker version验证。
网络配置方面,单机部署仅需开放8848(默认服务端口)和9848(集群通信端口);集群模式需确保所有节点间网络互通,建议配置防火墙规则仅允许节点间通信。存储方面,Nacos默认使用嵌入式数据库Derby,生产环境建议替换为MySQL 5.7+,需提前创建数据库并导入nacos-mysql.sql脚本。
1.2 Docker与镜像准备
从Docker Hub拉取官方Nacos镜像:
docker pull nacos/nacos-server:v2.2.0
或使用阿里云镜像加速:
docker pull registry.cn-hangzhou.aliyuncs.com/nacos-docker/nacos-server:v2.2.0
验证镜像完整性:
docker inspect nacos/nacos-server:v2.2.0 | grep "RepoDigests"
二、单机部署方案
2.1 基础单机部署
使用docker run快速启动:
docker run -d \--name nacos-standalone \-p 8848:8848 \-e MODE=standalone \-e PREFER_HOST_MODE=hostname \nacos/nacos-server:v2.2.0
关键参数说明:
MODE=standalone:强制单机模式PREFER_HOST_MODE=hostname:使用主机名作为服务标识-p 8848:8848:端口映射
验证部署:访问http://<主机IP>:8848/nacos,登录默认账号nacos/nacos。
2.2 持久化存储配置
单机模式下建议配置数据持久化,避免容器重启导致数据丢失。创建本地目录并挂载:
mkdir -p /data/nacos/standalone-logsdocker run -d \--name nacos-standalone-persistent \-p 8848:8848 \-v /data/nacos/standalone-logs:/home/nacos/logs \-e MODE=standalone \nacos/nacos-server:v2.2.0
2.3 数据库集成
生产环境建议使用外部MySQL数据库。创建数据库后,修改启动命令:
docker run -d \--name nacos-mysql \-p 8848:8848 \-e MODE=standalone \-e SPRING_DATASOURCE_PLATFORM=mysql \-e MYSQL_SERVICE_HOST=<MySQL_IP> \-e MYSQL_SERVICE_PORT=3306 \-e MYSQL_SERVICE_DB_NAME=nacos \-e MYSQL_SERVICE_USER=root \-e MYSQL_SERVICE_PASSWORD=<密码> \nacos/nacos-server:v2.2.0
三、集群部署方案
3.1 集群架构设计
Nacos2.2.0集群建议3节点起步,采用AP模式(默认)或CP模式(需配置nacos.core.protocol.raft.data.id=1)。节点间通过Gossip协议通信,需确保:
- 所有节点时间同步(NTP服务)
- 网络延迟<100ms
- 节点IP不可变
3.2 Docker Compose集群部署
创建docker-compose.yml文件:
version: '3'services:nacos1:image: nacos/nacos-server:v2.2.0container_name: nacos1environment:- MODE=cluster- NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848- NACOS_APPLICATION_PORT=8848- PREFER_HOST_MODE=ipvolumes:- ./nacos1-logs:/home/nacos/logsports:- "8848:8848"extra_hosts:- "nacos1:<IP1>"- "nacos2:<IP2>"- "nacos3:<IP3>"nacos2:image: nacos/nacos-server:v2.2.0# 类似配置nacos2和nacos3
启动集群:
docker-compose up -d
3.3 Kubernetes集群部署
对于K8s环境,创建StatefulSet:
apiVersion: apps/v1kind: StatefulSetmetadata:name: nacosspec:serviceName: nacos-headlessreplicas: 3selector:matchLabels:app: nacostemplate:metadata:labels:app: nacosspec:containers:- name: nacosimage: nacos/nacos-server:v2.2.0env:- name: MODEvalue: "cluster"- name: NACOS_SERVERSvalue: "nacos-0.nacos-headless.default.svc.cluster.local:8848 nacos-1.nacos-headless.default.svc.cluster.local:8848 nacos-2.nacos-headless.default.svc.cluster.local:8848"ports:- containerPort: 8848name: server
四、高级配置与优化
4.1 JVM参数调优
通过环境变量调整JVM参数:
docker run -d \--name nacos-jvm-tuned \-e JVM_XMS=2g \-e JVM_XMX=2g \-e JVM_XMN=1g \nacos/nacos-server:v2.2.0
4.2 监控集成
集成Prometheus监控:
docker run -d \--name nacos-prometheus \-p 8848:8848 \-p 9848:9848 \-e MODE=standalone \-e NACOS_PROMETHEUS_ENDPOINT=true \nacos/nacos-server:v2.2.0
4.3 常见问题排查
- 集群无法同步:检查
/home/nacos/logs/nacos.log中的Raft日志 - 端口冲突:确保8848、9848、7848端口未被占用
- 数据库连接失败:验证MySQL权限及网络连通性
五、最佳实践建议
- 备份策略:定期备份
/home/nacos/data目录 - 升级路径:先升级从节点,再升级主节点
- 性能基准:单机模式QPS约3000,集群模式线性扩展
通过本文的详细指导,开发者可快速完成Nacos2.2.0的Docker化部署,并根据实际需求选择单机或集群方案。建议生产环境采用集群模式并配置监控告警,确保服务高可用。