欢迎光临
我们一直在努力

Docker安装Nacos指南


文章目录

    • 前言
    • 环境准备
    • 第一步:拉取镜像
    • 第二步:先跑一个临时容器(关键步骤)
      • 2.1 启动临时容器
      • 2.2 导出配置文件和数据
    • 第三步:正式运行 Nacos 容器
      • 3.1 删除临时容器
      • 3.2 启动正式容器(带目录挂载)
    • 第四步:解决 Derby 启动报错
      • 4.1 认识两个重要文件
      • 4.2 创建数据库并初始化
      • 4.3 修改 Nacos 配置
      • 4.4 重新启动
      • 4.5 验证
    • 总结

在这里插入图片描述

前言

作为一名 Java 开发者,Nacos 这个名字你一定不陌生。它是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。简单来说,它身兼两职:注册中心 + 配置中心。

传统的安装方式需要下载压缩包、解压、配置 JDK、启动脚本……光环境准备就够折腾一阵子了。而用 Docker 安装,一行命令就能把服务拉起来,省时省力。

本文将按以下流程安装:

  • 拉取 Nacos 镜像
  • 运行临时容器,导出配置文件
  • 挂载目录,正式运行
  • 用 MySQL 替换 Derby,解决启动报错

  • 环境准备

    在开始之前,建议先创建一个工作目录,用于存放 Nacos 的配置文件、数据文件和日志。这样做的好处是:即使容器被删了,数据还在。

    我在 E:\\docker 下创建了一个 空白的 nacos 文件夹:


    第一步:拉取镜像

    本文以 v2.2.3 版本为例。打开终端,执行:

    docker pull nacos/nacos-server:v2.2.3

    镜像拉完之后,验证一下:

    docker images

    如果列表中出现了 nacos/nacos-server 且 TAG 为 v2.2.3,说明下载成功。

    小贴士:如果不指定版本号(即 docker pull nacos/nacos-server),Docker 默认拉取 latest 标签。但在生产环境中,强烈建议指定明确的版本号,避免因版本差异导致不可预期的问题。


    第二步:先跑一个临时容器(关键步骤)

    镜像拉好了,为什么不直接一步到位运行最终容器?这里有一个很常见的坑:你需要先把容器里的配置文件复制出来,否则等会儿做目录挂载时,宿主机上的空文件夹会把容器里的配置"覆盖"掉,导致 Nacos 启动失败。

    所以正确的姿势是:先跑一个临时容器,把配置文件拷出来,再删掉它。

    2.1 启动临时容器

    docker run -d –name nacos –env MODE=standalone -p 8848:8848 -p 9848:9848 nacos/nacos-server:v2.2.3

    各参数含义:

    参数说明
    -d 后台运行容器(detached mode)
    –name nacos 给容器起个名字,方便后续操作
    –env MODE=standalone 以单机模式运行。Nacos 支持单机模式和集群模式,开发/测试环境用单机就够了
    -p 8848:8848 将宿主机的 8848 端口映射到容器的 8848 端口(Nacos 默认端口)
    -p 9848:9848 将 9848 端口映射出来,用于 gRPC 通信(Nacos 2.x 新增)

    执行后,用 docker ps 确认容器已经在跑。

    此时访问 http://localhost:8848/nacos,你应该能看到 Nacos 的登录页面了。默认用户名和密码都是 nacos。

    2.2 导出配置文件和数据

    docker cp nacos:/home/nacos/conf E:\\docker\\nacos\\conf
    docker cp nacos:/home/nacos/data E:\\docker\\nacos\\data

    docker cp 的作用是把容器内部的文件拷贝到宿主机。这里我们把 conf 和 data 两个核心目录都导了出来。

    复制成功后,可以打开对应文件夹,看看是否复制成功了:


    第三步:正式运行 Nacos 容器

    3.1 删除临时容器

    docker rm -f nacos

    -f 参数表示强制删除,即使容器正在运行。

    3.2 启动正式容器(带目录挂载)

    docker run -d –name nacos –privileged -e MODE=standalone -e JVM_XMX=300m -e JVM_XMS=300m -p 8848:8848 -p 9848:9848 -v E:\\docker\\nacos\\conf:/home/nacos/conf -v E:\\docker\\nacos\\data:/home/nacos/data -v E:\\docker\\nacos\\logs:/home/nacos/logs nacos/nacos-server:v2.2.3

    对比临时容器,这里多了几个关键参数:

    参数说明
    –privileged 以特权模式运行,赋予容器更高的系统权限
    -e JVM_XMX=300m JVM 最大堆内存 300MB
    -e JVM_XMS=300m JVM 初始堆内存 300MB(与 Xmx 设成一样,避免 JVM 动态伸缩带来的性能开销)
    -v 宿主机路径:容器路径 目录挂载,这是持久化的核心

    为什么要挂载三个目录?

    • conf:配置文件在外面,改配置不用进容器
    • data:数据落盘到宿主机,容器删了数据还在
    • logs:方便排查问题时直接看日志

    至此,一个"正经"的 Nacos 单机环境就搭好了 🎉


    第四步:解决 Derby 启动报错

    正常来说,直接启动的话会启动不起来,翻看日志,发现报错:

    load derby-schema.sql error

    这是因为 Nacos 默认使用内嵌的 Derby 数据库,在某些环境下初始化会失败。解决方案很简单:换 MySQL。

    4.1 认识两个重要文件

    在 E:\\docker\\nacos\\conf 目录下,有两个文件需要关注:

    • application.properties — Nacos 的主配置文件,在这里改数据库连接
    • mysql-schema.sql — MySQL 初始化脚本,包含 Nacos 需要的所有表结构

    4.2 创建数据库并初始化

    用 Navicat(或其他工具)连上你的 MySQL,创建一个新库:

    CREATE DATABASE nacos_config DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

    然后,把 mysql-schema.sql 里的 SQL 全部执行一遍。这个脚本会创建以下核心表:

    表名用途
    config_info 配置信息主表
    config_info_aggr 聚合配置
    config_info_beta Beta 版配置
    config_info_tag 配置标签
    his_config_info 配置变更历史
    tenant_info 租户信息
    users / roles / permissions 用户权限相关

    脚本还贴心地插入了一条默认管理员记录:

    • 用户名:nacos
    • 密码:nacos(BCrypt 加密存储)

    4.3 修改 Nacos 配置

    编辑 E:\\docker\\nacos\\conf\\application.properties,找到数据库相关配置,改成这样:

    spring.datasource.platform=mysql

    db.url.0=jdbc:mysql://host.docker.internal:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
    db.user.0=root
    db.password.0=your_password

    几点说明:

  • spring.datasource.platform 原来是被注释掉的,需要**取消注释并改为 **mysql
  • 数据库 IP host.docker.internal 是 Docker 网络中访问宿主机的默认网关地址。如果你的 MySQL 跑在宿主机上,就用这个 IP;如果 MySQL 也在 Docker 里,用容器名或 docker network 分配的 IP
  • 用户名和密码改成你自己的
  • 4.4 重新启动

    保存配置后,删除旧容器,重新执行启动命令:

    docker run -d –name nacos –privileged -e MODE=standalone -e JVM_XMX=300m -e JVM_XMS=300m -p 8848:8848 -p 9848:9848 -v E:\\docker\\nacos\\conf:/home/nacos/conf -v E:\\docker\\nacos\\data:/home/nacos/data -v E:\\docker\\nacos\\logs:/home/nacos/logs nacos/nacos-server:v2.2.3

    这次因为配置文件已经指向了 MySQL,Nacos 启动后会连接 nacos_config 库,不再依赖内嵌的 Derby 数据库,启动报错自然就消失了。

    4.5 验证

    再次访问 http://localhost:8848/nacos,登录后进入「命名空间」菜单,试着新建一个命名空间。如果能正常创建,并且在 tenant_info 表中能看到新纪录,就说明一切正常 ✅

    下次想启动nacos时,直接运行

    docker start nacos

    一劳永逸。


    总结

    回顾一下,整个安装流程其实就四步:

    拉取镜像 → 跑临时容器拷配置 → 挂载目录正式运行 → 切 MySQL

    赞(0)
    未经允许不得转载:171主机测评 » Docker安装Nacos指南
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址