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,然后发现第一次登录,是在设置我们的密码,这个你自己随意设置。然后点提交后会提示我们初始化密码成功,然后第一次登录还会出现错误情况,这时候不管,刷新一下页面,用你设置的用户名和密码再登录,就能进入控制台了。
现在就是可以正常使用了,如果本文对你产生了帮助,希望不要吝啬你的小手,帮忙一键三连哦!