Docker安装nacos

安装镜像

docker pull nacos/nacos-server

  • PS:这是拉取最新的nacos版本,如果需要拉取别的版本可以加:版本号(如:docker pull nacos/nacos-server:v2.2.0

挂载目录

mkdir -p /mydata/nacos/logs/                      #新建logs目录
mkdir -p /mydata/nacos/conf/                        #新建conf目录

PS:这一步是添加映射文件夹,将宿主机的文件映射到nacos容器中

启动nacos并复制文件到宿主机,关闭容器

开放端口

## 开放端口8848 9848 9849
firewall-cmd --zone=public --add-port=8848/tcp --permanent
firewall-cmd --zone=public --add-port=9848/tcp --permanent
firewall-cmd --zone=public --add-port=9849/tcp --permanent

## 重启防火墙
firewall-cmd --reload

## 查看所有开启的端口
firewall-cmd --zone=public --list-ports

#重启docker
systemctl restart docker

启动容器

docker run -p 8848:8848 --name nacos -d nacos/nacos-server

复制文件

docker cp nacos:/home/nacos/logs/ /mydata/nacos/logs/
docker cp nacos:/home/nacos/conf/ /mydata/nacos/conf/

关闭容器

docker rm -f nacos

mysql创建所需的表

  • mysql中新建一个库,名字可自定义,这里就用nacos-config
  • github中找到创建表的文件,在nacos-config库中执行,创建所需的表

再次启动nacos

docker run -d --name nacos -p 8848:8848  -p 9848:9848 -p 9849:9849 --privileged=true -e JVM_XMS=256m -e JVM_XMX=256m -e MODE=standalone -v /mydata/nacos/logs/:/home/nacos/logs -v /mydata/nacos/conf/:/home/nacos/conf/ --restart=always nacos/nacos-server

语句讲解

  • docker run -d : 启动容器 -d是后台启动并返回容器id的意思
    –name nacos :为容器指定一个名称
    -p 8848:8848 -p 9848:9848 -p 9849:9849 : 指定端口映射,注意这里的p不能大写,大写是随机端口映射
    –privileged=true : 扩大容器内的权限,将容器内的权限变为root权限,不加的话就是普通用户权限,可能会出现cannot open directory
    -e JVM_XMS=256m : 为jvm启动时分配的内存
    -e JVM_XMX=256m : 为jvm运行过程中分配的最大内存
    -e MODE=standalone : 使用 standalone模式(单机模式),MODE值有cluster(集群)模式/standalone模式两种,MODE必须大写
    -v /mydata/nacos/logs/:/home/nacos/logs : 将容器的/home/nacos/logs目录挂载到 /mydata/nacos/logs
    -v /mydata/nacos/conf/:/home/nacos/conf/: 将容器的/home/nacos/conf目录挂载到 /mydata/nacos/conf
    –restart=always :重启docker时,自动启动相关容器

注意

  1. 这里最容易犯错的就是挂载目录对应不上,可以看下自己语句中的-v 后面的目录是否映射正确,博主第一次安装的时候logs里面还有一个logs文件夹,conf里面还有个conf文件夹,导致出错

修改配置文件

vim /mydata/nacos/conf/conf/application.properties

修改为对应的配置文件

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=30000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root

访问页面

http://ip:8848/nacos/index.html

遇到的问题

docker logs ab40f7cd690a

提示

java.io.FileNotFoundException: /home/nacos/conf/nacos-logback.xml (No such file or directory)
解决:本地拷贝一份

docker cp /mydata/nacos/conf/conf/nacos-logback.xml nacos: /home/nacos/conf/

再重启

docker restart ab40f7cd690a