Docker 安装 Nacos
启动命令
开启鉴权的单机启动
docker run -d \
--name nacos \
--restart always \
-e PREFER_HOST_MODE=hostname \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=127.0.0.1 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-e JAVA_OPTS="-Xms512m -Xmx1g" \
-e NACOS_AUTH_ENABLE=true \
-e NACOS_CORE_AUTH_SERVER_IDENTITY_KEY="MyNacos" \
-e NACOS_CORE_AUTH_SERVER_IDENTITY_VALUE="PnZPaCHMykI98sLspFmSbA==" \
-e NACOS_CORE_AUTH_PLUGIN_NACOS_TOKEN_SECRET_KEY="64xidmwfFmX6msJfaicwxEwwVoVZa0pKiTnUrUxhpqQ=" \
-m 1g \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
nacos/nacos-server:v2.4.3
环境变量说明
NACOS_CORE_AUTH_SERVER_IDENTITY_KEY 和 NACOS_CORE_AUTH_SERVER_IDENTITY_VALUE
这两个环境变量用于定义服务之间通信的鉴权标识
可以使用随机字符串生成工具生成 16-32 个字符的随机值。
使用 Linux 命令生成随机字符串:
openssl rand -base64 16
NACOS_CORE_AUTH_PLUGIN_NACOS_TOKEN_SECRET_KEY
这个值用于 JWT 的密钥,决定了 Token 的加密与解密规则,安全性要求更高。
使用随机生成工具生成 32-64 个字符长度的字符串,然后进行 Base64 编码。
openssl rand -base64 32
比如
$ openssl rand -base64 16
PnZPaCHMykI98sLspFmSbA==
$ openssl rand -base64 32
64xidmwfFmX6msJfaicwxEwwVoVZa0pKiTnUrUxhpqQ=
$
使用文件中环境变量启动
使用 Docker 的 env-file 功能,将环境变量存储在单独的文件中(如 .env 文件),然后通过 --env-file 参数加载。
示例 .env 文件:
PREFER_HOST_MODE=hostname
MODE=standalone
SPRING_DATASOURCE_PLATFORM=mysql
MYSQL_SERVICE_HOST=127.0.0.1
MYSQL_SERVICE_DB_NAME=nacos
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_USER=root
MYSQL_SERVICE_PASSWORD=root
JAVA_OPTS=-Xms512m -Xmx1g
NACOS_AUTH_ENABLE=true
NACOS_CORE_AUTH_SERVER_IDENTITY_KEY=MyNacos
NACOS_CORE_AUTH_SERVER_IDENTITY_VALUE=PnZPaCHMykI98sLspFmSbA==
NACOS_CORE_AUTH_PLUGIN_NACOS_TOKEN_SECRET_KEY=64xidmwfFmX6msJfaicwxEwwVoVZa0pKiTnUrUxhpqQ=
修改后的启动命令:
docker run -d \
--name nacos \
--restart always \
--env-file .env \
-m 1g \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
nacos/nacos-server:v2.4.3
建议
根据 Nacos 文档:
8848:Nacos 控制台和manual9848:gRPC 端口(用于客户端通信)9849:Raft 协议端口(用于集群同步)
如果是单机模式(MODE=standalone),9849 端口可能不需要暴露,建议移除 -p 9849:9849。
资源限制简单说明
Docker 的资源限制用于控制容器对宿主机资源的占用,确保系统稳定性。以下是针对你的 Nacos 启动命令中资源限制的简要说明:
-
内存限制 (
-m)- 命令中的
-m 1g表示容器最大可用内存为 1GB。 - 作用:防止 Nacos 容器占用过多内存,影响宿主机或其他容器。
- 建议:根据 Nacos 的实际负载调整,如单机模式可设为
512m到2g。确保JAVA_OPTS中的-Xms和-Xmx(如-Xms512m -Xmx1g)与-m匹配,避免内存分配冲突。
- 命令中的
-
CPU 限制 (
--cpus)- 你的命令未设置 CPU 限制,建议添加
--cpus="0.5",表示容器最多使用 0.5 个 CPU 核心。 - 作用:限制 Nacos 的 CPU 使用量,避免高负载时影响宿主机性能。
- 建议:根据宿主机 CPU 核心数和 Nacos 负载调整,如
0.5到1.0。
- 你的命令未设置 CPU 限制,建议添加
-
改进示例
docker run -d \ --name nacos \ --restart always \ --env-file .env \ -m 1g \ --cpus="0.5" \ -p 8848:8848 \ -p 9848:9848 \ nacos/nacos-server:v2.4.3 -
注意事项
- 内存与 JVM 参数一致:确保
-m值不低于JAVA_OPTS中的-Xmx,否则可能导致容器崩溃。 - 动态调整:根据实际运行情况,使用
docker stats监控容器资源使用,优化限制值。 - 生产环境:结合 Docker Compose 或 Kubernetes 的资源管理(如
limits和requests),实现更精细的控制。
- 内存与 JVM 参数一致:确保

浙公网安备 33010602011771号