docker安装nacos2.x

news2025/4/21 14:49:32
  • 本文为单机模式,非集群教程,埋坑

nacos2.x官方强制条件

64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
64 bit JDK 1.8+
Maven 3.2.x+

环境介绍

centos 7
maven 3.9.9
jdk 17
nacos 2.3.1

1. 拉取docker镜像

docker pull nacos/nacos-server:v2.3.1
#查看下载好的镜像
docker images

在这里插入图片描述

2. 创建挂载目录

#新建日志目录
mkdir -p /usr/local/nacos2.3.1-docker/logs
#新建conf目录
mkdir -p /usr/local/nacos2.3.1-docker/conf

3. 创建并启动容器

# 创建容器
docker run -d --name nacos2.3.1 -p 8848:8848 nacos/nacos-server:v2.3.1
  • docker run: 这是启动一个新的容器的Docker命令。
    参数说明
  • -d:
    • 含义: 以分离模式(detached mode)运行容器,这意味着容器将在后台运行。
    • 作用: 允许你在启动容器后立即释放终端,以便执行其他命令。
  • --name nacos2.3.1:
    • 含义: 为容器指定一个名称。
    • 作用: 在此例中,容器将被命名为nacos2.3.1。命名容器可以让你更容易地管理和引用它。
  • -p 8848:8848:
    • 含义: 将主机的端口映射到容器内的端口。
    • 作用: 此参数将主机的8848端口映射到容器内部的8848端口。外部访问主机的8848端口时,请求会被转发到Nacos服务器在容器中的8848端口。
  • nacos/nacos-server:v2.3.1:
    • 含义: 指定要使用的镜像和标签。
    • 作用: 使用nacos/nacos-server仓库中的v2.3.1版本镜像来创建容器。这里的nacos/nacos-server是Docker Hub上的镜像名称,而:v2.3.1指定了该镜像的具体版本标签。

4.将容器中的配置与日志目录复制到本地

docker cp nacos2.3.1:/home/nacos/logs/ /usr/local/nacos2.3.1-docker
docker cp nacos2.3.1:/home/nacos/conf/ /usr/local/nacos2.3.1-docker

在这里插入图片描述

5. mysql中创建nacos所需的库表

在mysql中创建nacos库

CREATE DATABASE `nacos` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';

将nacos目录下conf/mysql-schema.sql的内容复制到mysql中执行
在这里插入图片描述

6.删除原有容器并重新创建容器启动

停止并删除原有容器

docker stop nacos2.3.1 && docker rm nacos2.3.1

重新创建容器

docker run -d \
--name nacos2.3.1 \
-e NACOS_APPLICATION_PORT=8848 \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--privileged=true \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-e MYSQL_SERVICE_HOST=10.1.1.101 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-e NACOS_AUTH_TOKEN="看下面有怎么生成安全点的64位随机密钥" \
-e NACOS_AUTH_IDENTITY_KEY=nacos \
-e NACOS_AUTH_IDENTITY_VALUE=nacos \
-e NACOS_AUTH_ENABLE=true \
-e NACOS_AUTH_CACHE_ENABLE=true \
-e NACOS_SERVER_TIMEOUT=5000 \
-v /usr/local/nacos2.3.1-docker/logs:/home/nacos/logs \
-v /usr/local/nacos2.3.1-docker/conf/:/home/nacos/conf/ \
--restart=always \
nacos/nacos-server:v2.3.1

命令参数说明

  • docker run: 启动一个新的容器。
  • -d:
    • 含义: 以分离模式(detached mode)运行容器。
    • 作用: 让容器在后台运行,释放当前终端。
  • --name nacos2.3.1:
    • 含义: 为容器指定名称。
    • 作用: 将容器命名为nacos2.3.1,便于后续管理和引用。
  • -e NACOS_APPLICATION_PORT=8848:
    • 含义: 设置环境变量。
    • 作用: 指定Nacos服务的应用端口为8848
  • -p 8848:8848 -p 9848:9848 -p 9849:9849:
    • 含义: 端口映射。
    • 作用: 将宿主机的端口映射到容器内的对应端口。这里将宿主机的884898489849端口分别映射到容器内的相同端口。
  • --privileged=true:
    • 含义: 赋予容器扩展权限。
    • 作用: 提供对所有设备的访问权限,并允许执行几乎所有的操作,如同在宿主机上直接运行一样。
  • -e JVM_XMS=256m -e JVM_XMX=256m:
    • 含义: 设置环境变量。
    • 作用: 配置JVM的初始堆大小(Xms)和最大堆大小(Xmx)为256MB。
  • -e MODE=standalone:
    • 含义: 设置Nacos的工作模式。
    • 作用: 指定Nacos以单机模式运行,适用于开发或测试环境。
  • -e MYSQL_SERVICE_HOST=10.1.1.101:
    • 设置MySQL数据库服务器的主机地址或IP。
  • -e MYSQL_SERVICE_PORT=3306:
    • 设置MySQL服务端口,默认是3306。
  • -e MYSQL_SERVICE_DB_NAME=nacos:
    • 设置要使用的数据库名称。
  • -e MYSQL_SERVICE_USER=root:
    • 设置用于连接数据库的用户名。
  • -e MYSQL_SERVICE_PASSWORD=root:
    • 设置上述用户的密码。
  • -e NACOS_AUTH_TOKEN="bmFjb3MuY29yZS5hdXRoLnBsdWdpbi5uYWNvcy50**********=":
  • 含义: 设置认证令牌。
  • 作用: 设置一个用于认证的令牌,保护Nacos API的安全性。此令牌应妥善保管,不应公开。
  • -e NACOS_AUTH_IDENTITY_KEY=nacos:
  • 含义: 这个环境变量设置了一个键(key),用于身份验证机制中。在这个例子中,键被设为nacos
  • 作用: 它的作用是定义了在进行身份验证时用来标识请求或者会话的一个关键字段。这个键值对可以用于验证请求是否来自可信的来源,从而增强安全性。
  • -e NACOS_AUTH_IDENTITY_VALUE=nacos:
  • 含义: 此环境变量设置了与上述键对应的值(value)。这里,值同样被设为nacos。
  • 作用: 它的作用是提供了与上面提到的身份验证键相对应的具体值。在执行身份验证的过程中,系统会检查提供的凭证是否匹配预设的键值对。只有当请求中包含正确的键和值时,才会被认为是有效的请求,从而允许访问受保护的资源或服务。
  • -e NACOS_AUTH_ENABLE=true:
    • 含义: 启用认证模块。
    • 作用: 开启Nacos的认证功能,要求客户端在调用API时提供有效的凭证。
  • -e NACOS_AUTH_CACHE_ENABLE=true:
    • 含义: 启用认证缓存。
    • 作用: 开启认证信息的缓存机制,提高认证效率。对于频繁的身份验证请求,启用缓存可以减少数据库查询次数,提升性能。
  • -e NACOS_SERVER_TIMEOUT=5000:
    • 含义: 设置超时时间。
    • 作用: 设置Nacos服务端处理请求的超时时间为5秒(5000毫秒)。如果请求在这个时间内未完成,则会终止该请求。适当调整这个值可以根据实际网络情况优化性能。
  • -v /usr/local/nacos2.3.1-docker/logs/:/home/nacos/logs -v /usr/local/nacos2.3.1-docker/conf/:/home/nacos/conf/:
    • 含义: 绑定挂载卷。
    • 作用: 将宿主机的目录挂载到容器内,以便持久化数据。这里将宿主机上的/usr/local/nacos2.3.1-docker/logs//usr/local/nacos2.3.1-docker/conf/目录分别挂载到容器内的/home/nacos/logs/home/nacos/conf/
  • --restart=always:
    • 含义: 设置重启策略。
    • 作用: 如果容器停止,则总是尝试重启它,确保服务高可用性。
  • nacos/nacos-server:v2.3.1:
    • 含义: 使用的镜像及标签。
    • 作用: 基于nacos/nacos-server仓库中的v2.3.1版本镜像创建容器。

7.验证是否成功启动

查看docker中nacos日志

docker logs nacos2.3.1

在这里插入图片描述
浏览器访问

http://ip:8848/nacos/index.html
在这里插入图片描述

问题汇总

1.如何生成NACOS_AUTH_TOKEN

本质上就是设置一个复杂的字符串,越复杂越安全

使用 OpenSSL 命令行工具

openssl rand -base64 48

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2294680.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GB/T28181 开源日记[8]:国标开发速知速会

服务端源代码 github.com/gowvp/gb28181 前端源代码 github.com/gowvp/gb28181_web 介绍 go wvp 是 Go 语言实现的开源 GB28181 解决方案,基于GB28181-2022标准实现的网络视频平台,支持 rtmp/rtsp,客户端支持网页版本和安卓 App。支持rts…

6 maven工具的使用、maven项目中使用日志

文章目录 前言一、maven:一款管理和构建java项目的工具1 基本概念2 maven的安装与配置(1)maven的安装(2)IDEA集成Maven配置当前项目工程设置 maven全局设置 (3)创建一个maven项目 3 pom.xml文件…

GB/T 43698-2024 《网络安全技术 软件供应链安全要求》标准解读

一、43698-2024标准图解 https://mmbiz.qpic.cn/sz_mmbiz_png/rwcfRwCticvgeBPR8TWIPywUP8nGp4IMFwwrxAHMZ9Enfp3wibNxnfichT5zs7rh2FxTZWMxz0je9TZSqQ0lNZ7lQ/640?wx_fmtpng&fromappmsg 标准在线预览: 国家标准|GB/T 43698-2024 相关标准: &a…

CF 278A.Circle Line

题目分析 输入n个数据作为路径,求从a到b的最短距离,需要将其相成一个圆圈,既可以从小往大走又可以从大往小走 思路分析 依然将数据存为数组,通过下标进行操作,既然说了有两种方式那就计算两种方式哪个更快就输出谁 代…

本地部署deepseek简单教程

部署deepseek,首先需要知道deepseek官网地址:DeepSeek 第一步:Ollama 去ollama下载对应的版本,我的电脑是window 在这里可以看到关于deepseek相关 第二步,下载完ollama无脑下一步就可以 这样属于安装成功 第三步&…

UnityShader学习笔记——多种光源

——内容源自唐老狮的shader课程 目录 1.光源类型 2.判断光源类型 2.1.在哪判断 2.2.如何判断 3.光照衰减 3.1.基本概念 3.2.unity中的光照衰减 3.3.光源空间变换矩阵 4.点光源衰减计算 5.聚光灯衰减计算 5.1.聚光灯的cookie(灯光遮罩) 5.2.聚…

电脑右下角小喇叭没反应怎么回事,快速解决方案

当电脑右下角的小喇叭(音量图标)没有反应时,可以尝试以下快速解决方案: 一、基础检查与操作 检查键盘音量键: 按下键盘上的音量增加或减少键,或尝试Fn音量键(部分笔记本需组合键)&a…

Mysql基于binlog主从同步配置

主配置: 修改配置文件:/etc/my.cnf 添加server-id1 重启MySQL服务:systemctl restart mysqld 创建用户并授权: mysql> create user rep192.168.79.% identified with mysql_native_password by 123456; Query OK, 0 rows aff…

Docker Desktop安装到其他盘

Docker Desktop 默认安装到c盘,占用空间太大了,想给安装到其他盘,网上找了半天的都不对 正确安装命令: start /w "" "Docker Desktop Installer.exe" install --installation-dirF:\docker命令执行成功&am…

NetCore Consul动态伸缩+Ocelot 网关 缓存 自定义缓存 + 限流、熔断、超时 等服务治理

网关 OcelotGeteway 网关 Ocelot配置文件 {//单地址多实例负载均衡Consul 实现动态伸缩"Routes": [{// 上游 》》 接受的请求//上游请求方法,可以设置特定的 HTTP 方法列表或设置空列表以允许其中任何方法"UpstreamHttpMethod": [ "Get", &quo…

ubuntu 本地部署deepseek r1 蒸馏模型

本文中的文件路径或网络代理需要根据自身环境自行删改 一、交互式chat页面 1.1 open-webui 交互窗口部署:基于docker安装,且支持联网搜索 Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 AI 平台,旨在完全离线操作。它支持各种 LLM…

go语言中的反射

为什么会引入反射 有时我们需要写一个函数,这个函数有能力统一处理各种值类型,而这些类型可能无法共享同一个接口,也可能布局未知,也有可能这个类型在我们设计函数时还不存在,这个时候我们就可以用到反射。 空接口可…

JUC学习笔记02

文章目录 JUC笔记2练习题:手写线程池代码解释:AdvancedThreadPool 类:WorkerThread 内部类:AdvancedThreadPoolExample 类: 线程池的思考CPU密集型IO密集型 练习题:手写自动重试机练习题:手写定…

【论文翻译】DeepSeek-V3论文翻译——DeepSeek-V3 Technical Report——第一部分:引言与模型架构

论文原文链接:DeepSeek-V3/DeepSeek_V3.pdf at main deepseek-ai/DeepSeek-V3 GitHub 特别声明,本文不做任何商业用途,仅作为个人学习相关论文的翻译记录。本文对原文内容直译,一切以论文原文内容为准,对原文作者表示…

C++(进阶五)--STL--用一颗红黑树封装map和set

目录 1.红黑树源码(简略版) 2.模板参数的控制 3.红黑树的结点 4.迭代器的实现 正向迭代器 反向迭代器 5.set的模拟实现 6.map的模拟实现 7.封装完成后的代码 RBTree.h mymap.h myset.h 1.红黑树源码(简略版) 下面我们…

飞算JavaAI :AI + 时代下的行业趋势引领者与推动者

在科技飞速发展的当下,AI 时代正以前所未有的速度重塑着各个行业的格局,而软件开发领域更是这场变革的前沿阵地。在众多创新力量之中,飞算JavaAI 脱颖而出,宛如一颗璀璨的新星,凭借其独树一帜的特性与强大功能&#x…

【重新认识C语言----结构体篇】

目录 -----------------------------------------begin------------------------------------- 引言 1. 结构体的基本概念 1.1 为什么需要结构体? 1.2 结构体的定义 2. 结构体变量的声明与初始化 2.1 声明结构体变量 2.2 初始化结构体变量 3. 结构体成员的访…

一种解决SoC总线功能验证完备性的技术

1. 前言 通过总线将各个IP通过总线连接起来的SoC芯片是未来的大趋势,也是缩短芯片开发周期,抢先进入市场的常用方法。如何确保各个IP是否正确连接到总线上,而且各IP的地址空间分配是否正确,是一件很棘手的事情。本文提出了一种新…

【Linux系统】线程:线程库 / 线程栈 / 线程库源码阅读学习

一、线程库 1、线程库介绍:命名与设计 命名:线程库通常根据其实现目的和平台特性进行命名。例如,POSIX标准定义了Pthreads(POSIX Threads),这是一个广泛使用的线程库规范,适用于多种操作系统。此…

深度剖析 Redis:缓存穿透、击穿与雪崩问题及实战解决方案

一、缓存基本使用逻辑 在应用程序中,为了提高数据访问效率,常常会使用缓存。一般的缓存使用逻辑是:根据 key 去 Redis 查询是否有数据,如果命中就直接返回缓存中的数据;如果缓存不存在,则查询数据库&#…