Docker安装nacos并开启鉴权


本文就简单明了的说一下Docker安装Nacos,并且开启一下鉴权,这个鉴权有点小坑,后面会说。

一、拉取镜像

Docker的安装和配置镜像加速在这篇文章,有需要的可以点击:Docker之路(一)–安装Docker
选择Nacos版本
Nacos版本分为两部分:2.2.2之前和2.2.2之后的,2.2.2之前Nacos默认控制台,无论服务端是否开启鉴权,都会存在一个登录页;这导致很多用户被误导认为Nacos默认是存在鉴权的。在社区安全工程师的建议下,Nacos自2.2.2版本开始,在未开启鉴权时,默认控制台将不需要登录即可访问,同时在控制台中给予提示,提醒用户当前集群未开启鉴权。
我们这里直接拉取最新版本的:latest

Docker pull nacos/nacos-server

如果你要指定版本,就参考如下格式:

Docker pull nacos/nacos-server:v2.2.0

ps:这个格式,有些是不带v的,比如有些是v2.4.0.1,有些是1.4.2,可以去dockerhub查一下对应版本就行。

二、在本地创建挂载目录的文件

目录你随意,主要挂载容器内部conf和logs这两个目录下的文件

mkdir -p /data/dockerData/nacos/conf
mkdir -p /data/dockerData/nacos/logs

三、创建临时Nacos容器(会删除),将容器内部conf和logs下的文件拷贝

1.启动容器

docker run -d --name nacos nacos/nacos-server

2.复制

docker cp nacos:/home/nacos/logs /data/dockerData/nacos
docker cp nacos:/home/nacos/conf /data/dockerData/nacos

3.删除容器

docker rm -f nacos

四、运行最终Nacos容器

启动指定:

docker run -d \
        --name nacos \
        -p 8848:8848 \
        -p 9848:9848 \
        -p 9849:9849 \
        -e JVM_XMS=128m \
        -e JVM_XMX=128m \
        -e MODE=standalone \
        -v /data/dockerData/nacos/conf:/home/nacos/conf \
        -v /data/dockerData/nacos/logs:/home/nacos/logs \
        --restart=always \
        nacos/nacos-server

参数解读
JVM_XMS和JVM_XMX:jvm最大和最小容量,默认1G
MODE:系统启动方式: 集群/单机
restart:是否跟随Docker重启而重启

五、开放端口

参考我这篇文章:Linux放行端口

六、浏览器访问

输入ip:8848/nacos/index.html
在这里插入图片描述
可以看到,主页会显示当前集群没有开启鉴权,参考文档开启鉴权

七、开启鉴权

这时候坑来了
官方文档里面内容是这样的,我原话复制一下:
Docker环境
官方镜像
如果使用官方镜像,请在启动docker容器时,添加如下环境变量

NACOS_AUTH_ENABLE=true

例如,可以通过如下命令运行开启了鉴权的容器:

docker run --env PREFER_HOST_MODE=hostname --env MODE=standalone --env NACOS_AUTH_ENABLE=true -p 8848:8848 nacos/nacos-server

如果这时候你傻乎乎的去关掉容器,重启用run命令启动nacos,加入NACOS_AUTH_ENABLE=true的参数,你会发现根本就启动不了,容器报错,这是最坑的,作为官方文档,内容竟然是错的。或许别人这说的是官方镜像,我去官方下载的镜像,不属于官方镜像。

正确的开启鉴权做法是怎样呢?
1.回到第四步运行最终Nacos容器开启的那个容器,进入Nacos容器内部

docker exec -it nacos bash

2.修改conf下面的配置文件

cd conf
vim application.properties

在这里插入图片描述
如图所示:修改三行,新增2行。
新增的两行:

##新增两行
nacos.core.auth.enabled=true
nacos.core.auth.enable.userAgentAuthWhite=false

修改的三行

nacos.core.auth.plugin.nacos.token.secret.key=${NACOS_AUTH_TOKEN:SecretKey01234567890123456789012345345678999987654901234567890123456789}
nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:admin}
nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:admin}

其中:SecretKey01234567890123456789012345345678999987654901234567890123456789这一长串你可以修改为随意数字,不要太短就行
admin也可以改为其他的单词随你,官方的解释是:配置自定义身份识别的key(不可为空)和value(不可为空)
3.重启Nacos容器

docker restart nacos

4.浏览器重新访问
在这里插入图片描述
这时候我们输入用户名和密码都为nacos,然后发现第一次登录,是在设置我们的密码,这个你自己随意设置。然后点提交后会提示我们初始化密码成功,然后第一次登录还会出现错误情况,这时候不管,刷新一下页面,用你设置的用户名和密码再登录,就能进入控制台了

在这里插入图片描述
现在就是可以正常使用了,如果本文对你产生了帮助,希望不要吝啬你的小手,帮忙一键三连哦!

<think>嗯,用户需要的是在Docker环境中开启Nacos的方法。这个问题很明确,我要根据提供的四个站内引用内容整合出完整的解决方案。 用户提供的引用信息很有价值。引用[1]提到需要解决Nacos漏洞问题,引用[2]介绍了基本的Docker安装步骤,引用[3]详细说明了如何通过修改配置文件开启,引用[4]则指出了最新版Nacos可能出现的相关问题。 考虑到用户的需求,我需要提供一个清晰的逐步指南。首先应该包括基础环境准备步骤,比如创建数据目录和下载镜像。然后重点是如何修改配置文件来启用功能,这部分需要详细说明每个需要添加或修改的配置项,特别是那几个关键的auth配置项。 用户可能在实际操作中遇到容器重启问题,所以应该提醒注意修改配置文件后的重启步骤。还要考虑到不同版本Nacos的差异,给出通用性建议。最后验证步骤也很重要,要确保用户能确认是否成功启用。 在整理步骤时,需要特别注意引用[3]提到的三个关键配置项:nacos.core.auth.enabled、nacos.core.auth.plugin.nacos.token.secret.key等,这些是开启的核心。同时要提醒用户secret.key需要自定义且保证安全性。 用户可能是系统管理员或DevOps工程师,正在部署生产环境,所以安全性和步骤的准确性都很重要。我应该避免使用可能过时的信息,尽量整合引用中最新的实践方法。 </think>在Docker环境中开启Nacos,需要通过环境变量或修改配置文件实现。以下是基于最新实践的操作步骤(适用于Nacos 2.2.x及以上版本): ### 📝 完整操作步骤 1. **创建数据持久化目录** ```bash mkdir -p /data/docker/nacos/conf ``` *用于存储自定义配置文件,避免容器重启后配置丢失* 2. **启动临时容器获取默认配置** ```bash docker run -d --name nacos-temp -e MODE=standalone nacos/nacos-server docker cp nacos-temp:/home/nacos/conf/application.properties /data/docker/nacos/conf/ docker rm -f nacos-temp ``` *获取基础配置文件以便修改[^3]* 3. **修改配置文件** 编辑 `/data/docker/nacos/conf/application.properties`,**添加/修改**以下核心参数: ```properties ### 启用 nacos.core.auth.enabled=true ### 关闭客户端白名单(强制nacos.core.auth.enable.userAgentAuthWhite=false ### 设置Token密钥(自定义32位以上字符串) nacos.core.auth.plugin.nacos.token.secret.key=VGhpc0lzQVNlY3JldEtleUZvck5hY29zMTIzNDU2Nzg5MA== ### 服务端身份标识(可选但推荐) nacos.core.auth.server.identity.key=securityIdentity nacos.core.auth.server.identity.value=MySecurityIdentity ``` *密钥需自定义强密码(建议Base64编码)[^3][^4]* 4. **启动带容器** ```bash docker run -d --name nacos \ -p 8848:8848 -p 9848:9848 \ -e MODE=standalone \ -v /data/docker/nacos/conf:/home/nacos/conf \ nacos/nacos-server:2.2.2 ``` *关键点:* - `-v` 挂载自定义配置目录 - 必须开放`9848`端口(Nacos 2.0+ gRPC端口) - 指定版本避免兼容问题[^2] 5. **验证状态** - 访问 `http://服务器IP:8848/nacos` - 应出现登录界面(默认账号:`nacos`/`nacos`) - 尝试未登录访问API将返回`403`错误 ### ️ 常见问题解决 1. **无登录界面直接进主页** 检查配置文件中`nacos.core.auth.enabled`是否设为`true`,重启容器[^4] 2. **导入配置报限错误** 需在请求头添加认证信息: ```bash curl -X POST -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." ... ``` *Token需通过`/nacos/v1/auth/login`接口获取[^4]* 3. **密钥安全建议** ```bash # 生成强密钥(推荐) openssl rand -base64 32 | tr -d '/+=' | cut -c1-32 ``` --- ### 🔍 相关问题 1. Nacos开启后如何通过API访问配置? 2. 如何修改Nacos Docker容器的默认管理员密码? 3. Nacos 2.x版本为何需要开放9848端口? 4. 配置后SpringCloud客户端如何连接Nacos? > 提示:生产环境建议使用Nacos最新版(当前2.3.2)修复已知安全漏洞[^1],升级只需替换镜像标签即可,例如:`nacos/nacos-server:2.3.2` [^1]: Nacos官方文档强调及时更新版本修复安全漏洞 [^2]: Docker环境基础部署流程 [^3]: 核心配置项说明 [^4]: 异常现象诊断方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值