• 精创网络
  • 精创网络
  • 首页
  • 产品优势
  • 产品价格
  • 产品功能
  • 新闻中心
  • 关于我们
  • 在线客服
  • 登录
  • DDoS防御和CC防御
  • 精创网络云防护,专注于大流量DDoS防御和CC防御。可防止SQL注入,以及XSS等网站安全漏洞的利用。
  • 免费试用
  • 新闻中心
  • 关于我们
  • 资讯动态
  • 帮助文档
  • 白名单保护
  • 常见问题
  • 政策协议
  • 帮助文档
  • 使用Docker容器化快速部署Nacos微服务平台
  • 来源:www.jcwlyf.com浏览:12更新:2025-11-08
  • 在微服务架构日益流行的今天,Nacos 作为一个优秀的服务发现、配置管理和服务管理平台,受到了广泛的关注和应用。而 Docker 作为一种轻量级的容器化技术,能够帮助我们快速、高效地部署应用。本文将详细介绍如何使用 Docker 容器化快速部署 Nacos 微服务平台。

    一、Nacos 简介

    Nacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它提供了一组简单易用的特性集,帮助我们快速实现微服务架构中的服务发现、配置管理、服务路由等功能。Nacos 支持多种语言和多种运行环境,并且具有高可用、高性能等特点,是构建微服务架构的理想选择。

    二、Docker 简介

    Docker 是一个用于开发、部署和运行应用程序的开放平台。它使用容器化技术,将应用程序及其依赖项打包成一个独立的容器,使得应用程序可以在任何环境中快速、一致地运行。Docker 容器具有轻量级、隔离性好、易于管理等优点,能够大大提高应用程序的部署效率和可维护性。

    三、环境准备

    在开始使用 Docker 容器化部署 Nacos 之前,我们需要确保系统已经安装了 Docker 和 Docker Compose。以下是安装步骤:

    1. 安装 Docker:根据不同的操作系统,选择合适的安装方式。以 Ubuntu 为例,可以使用以下命令进行安装:

    sudo apt-get update
    sudo apt-get install docker.io

    2. 安装 Docker Compose:可以使用以下命令进行安装:

    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose

    安装完成后,可以使用以下命令验证 Docker 和 Docker Compose 是否安装成功:

    docker --version
    docker-compose --version

    四、拉取 Nacos 镜像

    在 Docker Hub 上有官方的 Nacos 镜像,我们可以使用以下命令拉取:

    docker pull nacos/nacos-server

    拉取完成后,可以使用以下命令查看本地镜像列表:

    docker images

    五、使用 Docker 单节点部署 Nacos

    单节点部署适用于开发和测试环境。以下是使用 Docker 单节点部署 Nacos 的步骤:

    1. 创建一个用于存储 Nacos 数据的目录:

    mkdir -p /home/nacos/data

    2. 启动 Nacos 容器:

    docker run --name nacos -e MODE=standalone -p 8848:8848 -v /home/nacos/data:/home/nacos/data -d nacos/nacos-server

    参数说明:

    --name nacos:指定容器的名称为 nacos。

    -e MODE=standalone:指定 Nacos 以单机模式运行。

    -p 8848:8848:将容器的 8848 端口映射到宿主机的 8848 端口。

    -v /home/nacos/data:/home/nacos/data:将宿主机的 /home/nacos/data 目录挂载到容器的 /home/nacos/data 目录,用于持久化存储 Nacos 数据。

    -d:以守护进程模式运行容器。

    3. 验证 Nacos 是否启动成功:

    可以使用以下命令查看容器的运行状态:

    docker ps

    如果容器正在运行,说明 Nacos 已经成功启动。可以通过浏览器访问 http://localhost:8848/nacos 来访问 Nacos 的控制台,默认用户名和密码都是 nacos。

    六、使用 Docker Compose 集群部署 Nacos

    集群部署适用于生产环境,能够提高 Nacos 的可用性和性能。以下是使用 Docker Compose 集群部署 Nacos 的步骤:

    1. 创建一个 docker-compose.yml 文件:

    version: '3'
    services:
      mysql:
        image: mysql:8.0
        container_name: mysql
        environment:
          MYSQL_ROOT_PASSWORD: root
          MYSQL_DATABASE: nacos_config
          MYSQL_USER: nacos
          MYSQL_PASSWORD: nacos
        volumes:
          - ./mysql/data:/var/lib/mysql
          - ./mysql/init:/docker-entrypoint-initdb.d
        ports:
          - "3306:3306"
      nacos1:
        image: nacos/nacos-server
        container_name: nacos1
        environment:
          - PREFER_HOST_MODE=hostname
          - MODE=cluster
          - SPRING_DATASOURCE_PLATFORM=mysql
          - MYSQL_SERVICE_HOST=mysql
          - MYSQL_SERVICE_DB_NAME=nacos_config
          - MYSQL_SERVICE_USER=nacos
          - MYSQL_SERVICE_PASSWORD=nacos
          - NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
        ports:
          - "8848:8848"
        depends_on:
          - mysql
      nacos2:
        image: nacos/nacos-server
        container_name: nacos2
        environment:
          - PREFER_HOST_MODE=hostname
          - MODE=cluster
          - SPRING_DATASOURCE_PLATFORM=mysql
          - MYSQL_SERVICE_HOST=mysql
          - MYSQL_SERVICE_DB_NAME=nacos_config
          - MYSQL_SERVICE_USER=nacos
          - MYSQL_SERVICE_PASSWORD=nacos
          - NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
        ports:
          - "8849:8848"
        depends_on:
          - mysql
      nacos3:
        image: nacos/nacos-server
        container_name: nacos3
        environment:
          - PREFER_HOST_MODE=hostname
          - MODE=cluster
          - SPRING_DATASOURCE_PLATFORM=mysql
          - MYSQL_SERVICE_HOST=mysql
          - MYSQL_SERVICE_DB_NAME=nacos_config
          - MYSQL_SERVICE_USER=nacos
          - MYSQL_SERVICE_PASSWORD=nacos
          - NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
        ports:
          - "8850:8848"
        depends_on:
          - mysql

    2. 创建 MySQL 初始化脚本:

    在 ./mysql/init 目录下创建一个 init.sql 文件,内容如下:

    -- nacos_config 数据库初始化脚本
    CREATE DATABASE IF NOT EXISTS nacos_config DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    USE nacos_config;
    
    -- 导入 Nacos 官方提供的数据库脚本
    -- 可以从 https://github.com/alibaba/nacos/blob/master/distribution/conf/mysql-schema.sql 下载

    3. 启动集群:

    在 docker-compose.yml 文件所在的目录下,使用以下命令启动集群:

    docker-compose up -d

    4. 验证集群是否启动成功:

    可以使用以下命令查看容器的运行状态:

    docker ps

    如果所有容器都正在运行,说明集群已经成功启动。可以通过浏览器访问 http://localhost:8848/nacos 来访问 Nacos 的控制台。

    七、Nacos 配置管理和服务发现测试

    在 Nacos 部署完成后,我们可以进行一些简单的配置管理和服务发现测试。以下是示例代码:

    1. 配置管理:

    可以使用 Nacos 的 Java SDK 来进行配置管理。以下是一个简单的示例:

    import com.alibaba.nacos.api.NacosFactory;
    import com.alibaba.nacos.api.config.ConfigService;
    import com.alibaba.nacos.api.config.listener.Listener;
    import com.alibaba.nacos.api.exception.NacosException;
    
    import java.util.Properties;
    import java.util.concurrent.Executor;
    
    public class NacosConfigExample {
        public static void main(String[] args) throws NacosException {
            String serverAddr = "localhost:8848";
            String dataId = "example.properties";
            String group = "DEFAULT_GROUP";
            Properties properties = new Properties();
            properties.put("serverAddr", serverAddr);
            ConfigService configService = NacosFactory.createConfigService(properties);
            String config = configService.getConfig(dataId, group, 5000);
            System.out.println("Config: " + config);
    
            configService.addListener(dataId, group, new Listener() {
                @Override
                public Executor getExecutor() {
                    return null;
                }
    
                @Override
                public void receiveConfigInfo(String configInfo) {
                    System.out.println("Receive new config: " + configInfo);
                }
            });
        }
    }

    2. 服务发现:

    可以使用 Nacos 的 Java SDK 来进行服务发现。以下是一个简单的示例:

    import com.alibaba.nacos.api.NacosFactory;
    import com.alibaba.nacos.api.naming.NamingService;
    import com.alibaba.nacos.api.naming.pojo.Instance;
    import com.alibaba.nacos.api.exception.NacosException;
    
    import java.util.List;
    import java.util.Properties;
    
    public class NacosDiscoveryExample {
        public static void main(String[] args) throws NacosException {
            String serverAddr = "localhost:8848";
            String serviceName = "example-service";
            Properties properties = new Properties();
            properties.put("serverAddr", serverAddr);
            NamingService namingService = NacosFactory.createNamingService(properties);
            List<Instance> instances = namingService.getAllInstances(serviceName);
            for (Instance instance : instances) {
                System.out.println("Instance: " + instance.getIp() + ":" + instance.getPort());
            }
        }
    }

    八、总结

    通过使用 Docker 容器化技术,我们可以快速、高效地部署 Nacos 微服务平台。无论是单节点部署还是集群部署,都可以借助 Docker 和 Docker Compose 的强大功能来实现。同时,Nacos 提供的配置管理和服务发现功能,能够帮助我们更好地构建和管理微服务架构。希望本文对你有所帮助,让你能够顺利地使用 Docker 容器化部署 Nacos。

  • 关于我们
  • 关于我们
  • 服务条款
  • 隐私政策
  • 新闻中心
  • 资讯动态
  • 帮助文档
  • 网站地图
  • 服务指南
  • 购买流程
  • 白名单保护
  • 联系我们
  • QQ咨询:189292897
  • 电话咨询:16725561188
  • 服务时间:7*24小时
  • 电子邮箱:admin@jcwlyf.com
  • 微信咨询
  • Copyright © 2025 All Rights Reserved
  • 精创网络版权所有
  • 皖ICP备2022000252号
  • 皖公网安备34072202000275号