Ubuntu 22.04 (WSL2) 上使用 Docker 安装 Nacos 3.0.0
关键点
- 安装步骤:在 Ubuntu 22.04 (WSL) 上通过 Docker 安装 Nacos 3.0.0 涉及创建日志目录、生成认证令牌、运行容器并访问控制台。
- 认证要求:Nacos 3.0.0 默认启用认证,需配置
NACOS_AUTH_TOKEN
等参数,首次访问控制台需设置管理员密码。 - 控制台访问:控制台通过
http://localhost:8080/index.html
访问,与 2.x 版本的 8848 端口不同。 - 版本差异:Nacos 3.0.0 引入了新的控制台端口、增强的认证机制和独立控制台部署支持。
简介
Nacos(Dynamic Naming and Configuration Service)是一个由阿里巴巴开源的平台,用于动态服务发现、配置管理和服务管理。它在微服务架构中扮演着重要角色,支持服务注册、配置中心和动态路由等功能。本文详细介绍如何在 Ubuntu 22.04 的 WSL 环境中通过 Docker 安装 Nacos 3.0.0,并探讨其与 2.x 版本的区别。
前置条件
在开始之前,请确保满足以下条件:
- Docker 已安装:运行
docker --version
确认 Docker 正常工作。 - Ubuntu 22.04 (WSL):确保 WSL 环境配置正确,网络连接畅通。
- 端口可用:确认
8080
(控制台)、8848
(服务器)和9848
(gRPC)端口未被占用。 - 权限:需要 root 或 sudo 权限执行命令。
安装步骤
步骤 1:创建日志目录
Nacos 需要一个持久化的日志目录来存储运行日志。我们在主机上创建 /home/nacos/logs
目录,并设置权限以确保容器可以写入。
# 创建日志目录
mkdir -p /home/nacos/logs
# 设置读写权限(开发/测试环境)
chmod 777 -R /home/nacos/*
注意:chmod 777
仅适合开发/测试环境。在生产环境中,建议使用更严格的权限,如 chmod 755
。
步骤 2:生成认证令牌和身份标识
Nacos 3.0.0 默认启用认证,需要配置以下环境变量:
NACOS_AUTH_TOKEN
:认证令牌,需为长度大于 32 位的随机字符串,经 Base64 编码。NACOS_AUTH_IDENTITY_KEY
:服务器身份标识键。NACOS_AUTH_IDENTITY_VALUE
:服务器身份标识值。
生成认证令牌
使用在线工具(如 密码生成器)生成一个 64 位随机密码,例如:
X7kPqW9mT2rY8vL3nF6tJ0zB5cH1dQ2xA9eR4uM8iK7oP3wS6yN2lV0jG5fT
使用 Base64 编码工具(如 Base64 编码器 )将密码编码,得到:
WDdrUHFYOXZWMnJZOFRXOEZuTDZOQXhQd0I1Y0gxZFEyeEE5ZVI0dU04aUs3b1AzdyN2TjJsVjBqRzVmVA==
记下编码后的令牌,稍后在 Docker 命令中使用。
设置身份标识
NACOS_AUTH_IDENTITY_KEY
和NACOS_AUTH_IDENTITY_VALUE
可以设置为简单字符串,如nacos
和nacos
。- 为提高安全性,建议使用随机字符串,例如:
NACOS_AUTH_IDENTITY_KEY
:server_key_123
NACOS_AUTH_IDENTITY_VALUE
:server_value_456
步骤 3:启动 Nacos 容器
以下是启动 Nacos 3.0.0 的 Docker 命令,包含详细注释:
docker run -d \
# 后台运行容器
--name nacos \
# 容器名称为 nacos
-p 8080:8080 \
# 映射控制台端口(Nacos 3.0.0 使用 8080)
-p 8848:8848 \
# 映射服务器端口(服务注册和配置管理)
-p 9848:9848 \
# 映射 gRPC 端口(高性能客户端通信)
-e MODE=standalone \
# 设置单机模式,适合开发/测试
-e PREFER_HOST_MODE=hostname \
# 使用主机名模式,避免 WSL 网络问题
-e NACOS_AUTH_TOKEN='your_base64_encoded_token' \
# 设置 Base64 编码的认证令牌
-e NACOS_AUTH_IDENTITY_KEY='nacos' \
# 设置服务器身份标识键
-e NACOS_AUTH_IDENTITY_VALUE='nacos' \
# 设置服务器身份标识值
-v /home/nacos/logs:/home/nacos/logs \
# 挂载日志目录到主机
nacos/nacos-server:v3.0.0
# 使用 Nacos 3.0.0 镜像
参数说明
参数 | 描述 |
---|---|
-p 8080:8080 |
映射控制台端口,访问 Nacos 控制台。 |
-p 8848:8848 |
映射服务器端口,用于服务注册和配置管理。 |
-p 9848:9848 |
映射 gRPC 端口,用于高性能客户端通信。 |
-e MODE=standalone |
设置单机模式,适合开发/测试环境。 |
-e PREFER_HOST_MODE=hostname |
使用主机名解析,避免 WSL 网络问题。 |
-e NACOS_AUTH_TOKEN |
设置认证令牌,用于 API 认证。 |
-e NACOS_AUTH_IDENTITY_KEY |
设置服务器身份标识键。 |
-e NACOS_AUTH_IDENTITY_VALUE |
设置服务器身份标识值。 |
-v /home/nacos/logs:/home/nacos/logs |
持久化日志到主机目录。 |
注意:
- 确保替换
your_base64_encoded_token
为实际的 Base64 编码令牌。 - 如果不需要 gRPC 通信,可以省略
-p 9848:9848
。 NACOS_AUTH_ENABLE=true
在 3.0.0 中默认启用,无需显式设置。
步骤 4:访问 Nacos 控制台
容器启动后,打开浏览器访问 Nacos 控制台。
首次访问
- Nacos 3.0.0 默认启用认证,初始用户名为
nacos
,但密码需在首次访问时设置。 - 访问
http://localhost:8080/index.html
后,系统会提示您为nacos
用户设置初始密码。 - 建议设置强密码,例如:
Nacos@123456
。
登录控制台
- 使用用户名
nacos
和您设置的密码登录。 - 登录后,可在控制台进行配置管理、服务注册等操作。
步骤 5:验证安装
检查容器状态:
docker ps
确认
nacos
容器正在运行。检查日志:
docker logs nacos
查找类似
Nacos started successfully in standalone mode
的日志,确认启动成功。
访问控制台:验证是否可以登录并使用控制台功能。
Nacos 3.0.0 与 2.x 的区别
Nacos 3.0.0 相较于 2.x 版本在架构、功能和安全性方面有显著改进。以下是主要区别:
特性 | Nacos 3.0.0 | Nacos 2.x |
---|---|---|
控制台端口 | 使用 8080 端口,访问 http://localhost:8080/index.html 。 |
使用 8848 端口,访问 http://localhost:8848/nacos 。 |
认证机制 | 默认启用认证,需配置 NACOS_AUTH_TOKEN 、NACOS_AUTH_IDENTITY_KEY 和 NACOS_AUTH_IDENTITY_VALUE 。控制台需设置初始密码。 |
认证可选,默认禁用,需手动启用。 |
控制台部署 | 支持独立控制台部署,适合复杂场景。 | 控制台与服务器耦合。 |
协议支持 | 支持 xDS 协议(EDS、LDS、RDS、CDS),增强与 Service Mesh 集成。 | 无 xDS 协议支持。 |
技术栈 | 升级到 Spring Boot 3.x 和 JDK 17。 | 使用 Spring Boot 2.x 和 JDK 8/11。 |
性能优化 | 优化 gRPC 通信和配置推送,内存占用更低。 | 性能稍逊,推送延迟较高。 |
API 变更 | 引入 v3 控制台 API,旧 v1 API 默认禁用。 | 使用 v1 控制台 API。 |
MCP Registry | 引入了对 MCP (Model Content Protocol) 的支持 | - |
注意事项
端口冲突:启动容器前,确保
8080
、8848
和9848
端口未被占用。WSL 网络:WSL2 可能需要配置网络转发,确保
localhost:8080
可访问。日志管理:定期清理
/home/nacos/logs
目录,避免磁盘空间不足。生产环境:
- 单机模式仅适合开发/测试,生产环境建议使用集群模式并配置外部数据库(如 MySQL)。
- 更改默认用户名/密码,并使用更强的认证令牌。
Docker 镜像:本文使用
nacos/nacos-server:v3.0.0
,建议检查 Docker Hub 获取最新版本。
总结
通过以上步骤,您可以在 Ubuntu 22.04 (WSL) 上成功部署 Nacos 3.0.0。Nacos 3.0.0 的新控制台端口、增强的认证机制和独立部署支持使其更适合现代微服务架构。