通俗易懂了解什么是docker?以及docker的各种安装环境

时间:2024-10-22 08:13:32

文章目录

  • 一、docker是什么?
  • 二、安装docker(linxu安装)
    • 1.清除系统残余项(如果你的服务器之前没有装过Docker,可以直接跳过)
    • 2.安装下载Docker依赖的工具
    • 3、设置镜像仓库地址
    • 4、更新yum缓存(为了保证能更新和下载需要的服务:如docker)
    • 5、安装Docker(Docker版本分为CE(社区免费版)和EE(企业版,安全CE)
    • 6、启动docker并设置开机自启
    • 7、查看docker是否启动成功
    • 8、docker常用命令
  • 三、docker常用命令
  • 四、安装docker-compose命令脚本
  • 五、docker安装mysql
    • 1、下载镜像
    • 2、根据docker hub页面示例,来配置并启动容器
    • 3、 配置挂载
    • 4、启动mysql挂载配置文件,数据持久化到宿主主机
    • 5、 启动容器
    • 6.开启远程访问权限
    • 7、注意
  • 六、docker 安装 Redis
  • 七、docker 安装elasticsearch
  • 八、docker安装Kibana
  • 九、docker安装RabbitMQ
  • 十、docker安装Nacos
    • 1、Docker 拉取镜像
    • 2、挂载目录
    • 3、启动nacos并复制文件到宿主机
    • 5、再次启动nacos
    • 6、修改配置文件
    • 7、mysql中创建nacos所需的表
    • 8、访问页面

一、docker是什么?

在这里插入图片描述
的三个基本概念:

Image(镜像)
Container(容器)
Repository(仓库)

Docker的思想来自于集装箱,集装箱解决了什么问题?
在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。docker就是类似的理念。现在都流行云计算了,云计算就好比大货轮。docker就是集装箱.

还不懂得话,在这么理解,docker你理解为快递车.
那么快递车是不是有一个个包裹,包裹可以理解为一个镜像,镜像可以理解为一个Java类,而容器可以理解为Java类的实例。
类只有一个,但可以new出千千万万个实例对象。所以,镜像只是一个可以生成容器的东西,而容器才能让程序运行起来。

仓库的话,比如说,都应该用过git吧,完全可以理解为git,上传拉取操作

那么docker有什么好处呢?
最简单的一个例子,比如说,你在刚开始的一台服务器部署项目,那么部署项目一定要配置mysql等环境是吧
那么现在你要吧这个项目迁移到另一台服务器上,又要重写在另一台服务器上重写配置mysql等环境.可能会出现版本错乱等错误,很麻烦
那么现在第一次部署项目的时候,把项目等环境直接放进docker里面,下次你要迁移项目到另一台服务器上,自己把docker镜像上传到docker仓库上,然后再另一台服务器拉取就直接O了,这只是好处之一

二、安装docker(linxu安装)

1.清除系统残余项(如果你的服务器之前没有装过Docker,可以直接跳过)

直接复制

      sudo yum remove docker \
              docker-client \
              docker-client-latest \
              docker-common \
              docker-latest \
              docker-latest-logrotate \
              docker-logrotate \
              docker-selinux \
              docker-engine-selinux \
              docker-engine

2.安装下载Docker依赖的工具

输入命令:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

3、设置镜像仓库地址

docker默认的官方仓库地址

yum-config-manager
–add-repo
/linux/centos/ ##此地址为官方的仓库地址,在国内建议不要用

阿里云的镜像仓库地址

yum-config-manager \ --add-repo \
/docker-ce/linux/centos/

还有很多其他的仓库地址,如:网友云、有道等

4、更新yum缓存(为了保证能更新和下载需要的服务:如docker)

命令:

sudo yum makecache fast

5、安装Docker(Docker版本分为CE(社区免费版)和EE(企业版,安全CE)

命令:

yum install -y docker-ce

6、启动docker并设置开机自启

#启动docker命令
systemctl start docker
#设置开机自启命令
systemctl enable docker
#查看docker版本命令
docker version

7、查看docker是否启动成功

systemctl status docker

代表启动成功


补充一下
如果想设置开机自启可以(个人需求自选)
输入命令:

sudo systemctl enable docker

8、docker常用命令

启动docker

systemctl start docker

关闭docker

systemctl stop docker

重启docker

systemctl restart docker

docker设置随服务启动而自启动

systemctl enable docker

查看docker 运行状态 ------如果是在运行中 输入命令后 会看到绿色的active

systemctl status docker

查看docker 版本号信息

docker version

查看docker 详细信息 --------此命令可以查看到docker 中容器运行个数 以及镜像个数等等

docker info

查看运行中的容器

docker ps

查看全部容器

docker ps -a

查看镜像

docker images

所有镜像和容器都删除的命令

docker system prune -a

删除容器命令

docker rm 容器id

删除镜像

docker rmi 镜像id

三、docker常用命令

启动docker

systemctl start docker

关闭docker

systemctl stop docker

重启docker

systemctl restart docker

docker设置随服务启动而自启动

systemctl enable docker

查看docker 运行状态------如果是在运行中 输入命令后 会看到绿色的active

systemctl status docker

查看docker 版本号信息

docker version

docker info

查看自己服务器中docker 镜像列表

docker images
docker images -a 查看全部

修改镜像名称

​ docker tag 镜像ID 新镜像名称:版本

删除一个或者多个镜像:

​ docker rmi 镜像名称或ID

启动容器

docker start 容器ID

停止容器

docker stop 容器ID

重启容器

docker restart 容器ID

设置容器自启

docker update --restart=always 容器名称

docker kill 容器ID

删除容器,容器名字或者容器ID

docker rm Name/ID
docker rm -f Name/ID 强制删除某个容器

四、安装docker-compose命令脚本

1、Compose介绍
Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。

Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。

2、从github上下载docker-compose二进
制文件安装

下载最新版的docker-compose文件

sudo curl -L /docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

若是github访问太慢,可以用daocloud下载

sudo curl -L /docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

3、添加可执行权限

sudo chmod +x /usr/local/bin/docker-compose

4、创建软连(可跳过)

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

5、配置环境变量

vi /etc/profile

6、查看版本

docker-compose --version

安装成功
在这里插入图片描述

五、docker安装mysql

1、下载镜像

docker pull mysql:8.0.20

查看镜像命令(可以查看以下载的镜像):

docker images

2、根据docker hub页面示例,来配置并启动容器

创建本地数据库目录、配置文件以及日志目录(方便进行容器数据卷挂载)
注:因为mysql容器一旦销毁,数据库也就随之销毁,为了解决这个问题,docker官方提出了容器数据卷技术,就是在宿主机上新建一些目录与容器内的目录映射,当容器销毁时,宿主机上的目录文件不会消失,依然存在

新建目录命令:

建立宿主机数据库目录
mkdir /mydata/mysql8.0.20/mysql
建立宿主机数据库配置文件
mkdir /mydata/mysql8.0.20/conf
建立宿主机数据库日志目录
mkdir /mydata/mysql8.0.20/logs

注:目录可根据你自己修改,但是后面启动docker的时候目录也要改成你修改的

3、 配置挂载

启动镜像

docker run -p 3307:3306 --name mysql8 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.20

拷贝配置文件到创建的目录下

docker cp  mysql8:/etc/mysql /mydata/mysql8.0.20/

删除原有容器

docker rm -f mysql8

4、启动mysql挂载配置文件,数据持久化到宿主主机

cd /mydata/mysql8.0.20/mysql/

vim my.cnf

内容(一定不能复制错下面的内容、保存后记得检查是否一致):

[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
 
[client]
default-character-set=utf8
 
[mysql]

5、 启动容器

启动mysql容器命令

docker run \
-p 3306:3306 \
--name mysql8 \
--privileged=true \
--restart unless-stopped \
-v /mydata/mysql8.0.20/mysql:/etc/mysql \
-v /mydata/mysql8.0.20/logs:/logs \
-v /mydata/mysql8.0.20/data:/var/lib/mysql \
-v /etc/localtime:/etc/localtime \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0.20

参数解释

-p 3306:3306  端口映射 

--name mysql8  名称是mysql8

--privileged=true 挂载文件权限设置

--restart unless-stopped 设置 开机后自动重启容器

-v /docker/mysql8.0.20/mysql:/etc/mysql \ 挂载配置文件【路径是上面创建的挂载路径】

-v /docker/mysql8.0.20/logs:/logs \  挂载日志【路径是上面创建的挂载路径】

-v /docker/mysql8.0.20/data:/var/lib/mysql \ 挂载数据文件 持久化到主机【路径是上面创建的挂载路径】

-v /etc/localtime:/etc/localtime 容器时间与宿主机同步

-e MYSQL_ROOT_PASSWORD=123456 设置密码

-d mysql:8.0.20 后台启动,mysql

6.开启远程访问权限

进入mysql容器命令

 docker exec -it mysql8 bash

进入之后登陆

 mysql -u root -p
 输入密码我设置的是123456

设置权限(为root分配权限,以便可以远程连接)

grant all PRIVILEGES on *.* to root@'%' WITH GRANT OPTION;

use mysql

update user set host='%' where user='root';

刷新权限

 flush privileges;

测试是否成功
打开一个mysql客户端如navicat进行连接测试,测试成功
在这里插入图片描述

7、注意

如果远程连接不上的话
1.如果你是云服务器,在安全组中把3306端口开放了
2.如果你是虚拟机,把防火墙关了,或者让防火墙开放3306端口

六、docker 安装 Redis

1.下载Redis镜像

命令 描述
docker pull redis 下载最新版Redis镜像 (其实此命令就等同于 : docker pull
docker pull redis:xxx 下载指定版本的Redis镜像 (xxx指具体版本号)
在这里插入图片描述
我这里下载的是最新版本

docker pull redis:latest

2、创建Redis配置文件

启动前需要先创建Redis外部挂载的配置文件 ( /mydata/redis/conf/ )
之所以要先创建 , 是因为Redis本身容器只存在 /etc/redis 目录 , 本身就不创建 文件
当服务器和容器都不存在 文件时, 执行启动命令的时候 docker 会将 作为目录创建 , 这并不是我们想要的结果

创建目录 mkdir -p /mydata/redis/conf
创建文件 touch /mydata/redis/conf/

4、创建Redis容器并启动

docker run --restart=always \
-p 6379:6379 \
--name redis \
-v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server \
--appendonly yes

5、查看Redis是否运行

docker ps

在这里插入图片描述

6、进入Redis容器
通过 Docker 命令进入 Redis 容器内部,下面两个命令都可以

docker exec -it redis /bin/bash
docker exec -it redis bash

进入 Redis 控制台

redis-cli

添加一个变量为 key 为 name , value 为 bella 的内容

set name bella

查看 key 为 name 的 value 值

get name

7、退出容器

exit

8、Redis 配置文件修改

vi /mydata/redis/conf/

appendonly yes
protected-mode no
bind 0.0.0.0
requirepass 123456

在这里插入图片描述

七、docker 安装elasticsearch

ElasticSearch类似于关系型数据库,可以使用Kibana对ElasticSearch进行增删改查。
关系型数据库与ES对比:
在这里插入图片描述

1、下载镜像

docker pull elasticsearch:7.4.2

2、创建挂载目录

mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data

3、写入文件,可被远程任何机器访问

echo “: 0.0.0.0” > /mydata/elasticsearch/config/

4、运行,暴漏两个端口 9200 访问端口 9300 节点通信端口 单节点启动

docker run --restart=always --name elasticsearch -p 9200:9200 -p 9300:9300
–privileged=true \

-e ``“=single-node” \

-e ES_JAVA_OPTS=``“-Xms64m -Xms128m” \

-v` `/mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
\

-v` `/mydata/elasticsearch/data:``/usr/share/elasticsearch/data \

-v` `/mydata/elasticsearch/plugins:``/usr/share/elasticsearch/plugins \

-d elasticsearch:7.4.2

5、需求给挂载文件夹授予权限

chmod -R 777 /mydata/elasticsearch

6、如此就可以访问了,但是虚拟机需要设置网络端口 阿里云服务器需要设置 安全组 开发9200端口

访问: 虚拟机ip地址加上 9200
http://192.168.56.1:9200/

7、访问效果
在这里插入图片描述

八、docker安装Kibana

1、下载镜像

docker pull kibana:7.4.2

2、容器运行
192.168.56.1 :是自己虚拟机地址

docker run --restart=always --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.56.1:9200 -p 5601:5601 -d kibana:7.4.2

3、进入kibana容器-设置中文
接下来使用docker命令进入到kibana容器里面:

#进入容器
docker exec -it 容器ID /bin/sh

进入容器中找到/usr/share/kibana/config/

#使用vi 修改文件内容
vi /usr/share/kibana/config/

4.覆盖配置文件
将如下内容写到中,然后保存退出::wq

: kibana : “0”
#: [ “http://elasticsearch:9200” ]
: [ “http://自己的elasticsearch的IP:9200” ]
: true
#设置kibana中文显示 : zh-CN

5、访问 192.168.56.1:5601

需要等一会才能访问成功
在这里插入图片描述
6、使用kibana操作es的常见命令

2.1 基础命令
#所有节点 GET /_cat/nodes/
#查看主节点 GET /_cat/master
#查看健康状况 GET /_cat/health
#查看所有索引 GET /_cat/indices
#查看所有索引及数据量 GET /_cat/indices?v
#查看索引数据 GET /eslog/_search 结果说明: 在这里插入图片描述

#查看分词器装没有
#最大分词 GET _analyze { “analyzer”:“ik_max_word”, “text”:“我是中国人” }
#最小分词 GET _analyze { “analyzer”:“ik_smart”, “text”:“我是中国人” }
#所有节点 GET /_cat/nodes/ dilmrt代表全部权限 添加索引 PUT /eslog 删除索引 DELETE /eslog 查看索引 GET /eslog

7、Kibana实现增删改查

1、新增索引(注意不能出现大写):

#创建索引
PUT user

在这里插入图片描述

2、 查询索引:

#查询索引
get user

在这里插入图片描述
3、添加文档 /索引名称/类型/id:

#添加文档 /索引名称/类型/id:
POST /user/_doc/1
{
“name”: “jowell”,
“sex”: 0,
“age”: 23,
“address”: “广东省深圳市”
}

在这里插入图片描述
4.、查询文档:

#查看文档
GET /user/_search

在这里插入图片描述
5、修改文档:

#修改文档
PUT /user/_doc/1
{
“name”: “jowell”,
“sex”: 1,
“age”: 22,
“address”: “广东省深圳市”
}

在这里插入图片描述

6、根据ID查询文档

#根据ID查询文档
GET /user/_doc/1

在这里插入图片描述

7、分词器 Ik 支持中文分词

/jowell-jiawei/elasticsearch-analysis-ik-7.4.2

下载zip直接解压 放到挂载的plugins文件夹下面

最后重启Electicsearch

测试如下:
在这里插入图片描述

九、docker安装RabbitMQ

1、下载并且启动

5672 :这是rabbitMQ的端口号
15672 :这是那个RabbitMQ的web页面的端口号
4369以及25672:这是集群需要做的端口号

docker run --restart=always -d --name rabbitmq -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15672:15672 rabbitmq:management

2、访问rabbitmq

192.168.43.128:15672
默认账号:guest
默认密码: guest

在这里插入图片描述

十、docker安装Nacos

安装之前你需要准备一个mysql,当前安装方式是将数据持久化到数据库中的,这里的部署是单机模式

1、Docker 拉取镜像

docker pull nacos/nacos-server

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

2、挂载目录

新建logs目录

mkdir -p /mydata/nacos/logs/      

新建conf目录

mkdir -p /mydata/nacos/conf/			

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

3、启动nacos并复制文件到宿主机

启动容器

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

复制文件

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

删除容器

docker rm -f nacos

PS:这一步启动nacos是为了将nacos里面的文件拷贝出到挂载目录中,这样我们就可以直接修改挂载目录中文件来映射到容器里面去了

5、再次启动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

语句讲解

1、docker run -d : 启动容器 -d是后台启动并返回容器id的意思

2、–name nacos :为容器指定一个名称

3、-p 8848:8848 -p 9848:9848 -p 9849:9849 : 指定端口映射,注意这里的p不能大写,大写是随机端口映射

4、–privileged=true : 扩大容器内的权限,将容器内的权限变为root权限,不加的话就是普通用户权限,可能会出现cannot open directory

5、-e JVM_XMS=256m : 为jvm启动时分配的内存

6、-e JVM_XMX=256m : 为jvm运行过程中分配的最大内存

7、-e MODE=standalone : 使用 standalone模式(单机模式),MODE值有cluster(集群)模式/standalone模式两种,MODE必须大写

8、-v /mydata/nacos/logs/:/home/nacos/logs : 将容器的/home/nacos/logs目录挂载到 /mydata/nacos/logs

9、-v /mydata/nacos/conf/:/home/nacos/conf/: 将容器的/home/nacos/conf目录挂载到 /mydata/nacos/conf

10、–restart=always :重启docker时,自动启动相关容器

6、修改配置文件

1、主要修改的是文件、在宿主机中修改文件

vim /mydata/nacos/conf/application.properties

2、文件修改的地方(修改为你对应的mysql)

spring.datasource.platform=mysql 

db.num=1

db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME}?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&allowPublicKeyRetrieval=true&serverTimezone=GMT%2B8
db.url.1=jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME}?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&allowPublicKeyRetrieval=true&serverTimezone=GMT%2B8
db.user=${MYSQL_SERVICE_USER}
db.password=${MYSQL_SERVICE_PASSWORD

PS :因为我们在第三步已经复制了logs和conf到了我们的宿主机里面,那么我们可以直接修改文件映射到容器里,可以通过下面的语句来查看

3、进入到nacos容器里

docker exec -it nacos /bin/bash

4、 查看文件

cat /home/nacos/conf/application.properties

5、退出容器

exit

PS:如果文件没有修改成功的话,说明挂载目录映射的不对,仔细查看一下,可以通过下面的方法来查看是否正确

docker inspect --format=“{{json .Mounts}}” nacos

在这里插入图片描述

7、mysql中创建nacos所需的表

mysql中新建一个库,名字可自定义,这里就用nacos_config
① 创建数据库
在数据库中创建nacos_config库
CREATE DATABASE nacos_config;

在这里插入图片描述

持久化的db要自己建库建表,sql脚本附件(如果已存在数据库和表请忽略)

在这里插入代码片`-- 如果数据库存在先删后重新创建
DROP DATABASE IF EXISTS nacos;
CREATE DATABASE `nacos` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
-- 切换到nacos数据库
use nacos;

-- 建表
/*   表名称 = config_info                  */
/******************************************/
CREATE TABLE `config_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) DEFAULT NULL,
  `content` longtext NOT NULL COMMENT 'content',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  `app_name` varchar(128) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  `c_desc` varchar(256) DEFAULT NULL,
  `c_use` varchar(64) DEFAULT NULL,
  `effect` varchar(64) DEFAULT NULL,
  `type` varchar(64) DEFAULT NULL,
  `c_schema` text,
  `encrypted_data_key` text DEFAULT NULL COMMENT '密钥',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';

/******************************************/
/*   表名称 = config_info_aggr             */
/******************************************/
CREATE TABLE `config_info_aggr` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `datum_id` varchar(255) NOT NULL COMMENT 'datum_id',
  `content` longtext NOT NULL COMMENT '内容',
  `gmt_modified` datetime NOT NULL COMMENT '修改时间',
  `app_name` varchar(128) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';


/******************************************/
/*   表名称 = config_info_beta             */
/******************************************/
CREATE TABLE `config_info_beta` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL COMMENT 'content',
  `beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  `encrypted_data_key` text DEFAULT NULL COMMENT '密钥',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';

/******************************************/
/*   表名称 = config_info_tag              */
/******************************************/
CREATE TABLE `config_info_tag` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
  `tag_id` varchar(128) NOT NULL COMMENT 'tag_id',
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL COMMENT 'content',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';

/******************************************/
/*   表名称 = config_tags_relation         */
/******************************************/
CREATE TABLE `config_tags_relation` (
  `id` bigint(20) NOT NULL COMMENT 'id',
  `tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
  `tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
  `nid` bigint(20) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`nid`),
  UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';

/******************************************/
/*   表名称 = group_capacity               */
/******************************************/
CREATE TABLE `group_capacity` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
  `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';

/******************************************/
/*   表名称 = his_config_info              */
/******************************************/
CREATE TABLE `his_config_info` (
  `id` bigint(20) unsigned NOT NULL,
  `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `data_id` varchar(255) NOT NULL,
  `group_id` varchar(128) NOT NULL,
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL,
  `md5` varchar(32) DEFAULT NULL,
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `src_user` text,
  `src_ip` varchar(50) DEFAULT NULL,
  `op_type` char(10) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  `encrypted_data_key` text DEFAULT NULL COMMENT '密钥',
  PRIMARY KEY (`nid`),
  KEY `idx_gmt_create` (`gmt_create`),
  KEY `idx_gmt_modified` (`gmt_modified`),
  KEY `idx_did` (`data_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';


/******************************************/
/*   表名称 = tenant_capacity              */
/******************************************/
CREATE TABLE `tenant_capacity` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
  `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';


CREATE TABLE `tenant_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `kp` varchar(128) NOT NULL COMMENT 'kp',
  `tenant_id` varchar(128) default '' COMMENT 'tenant_id',
  `tenant_name` varchar(128) default '' COMMENT 'tenant_name',
  `tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
  `create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
  `gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
  `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';

CREATE TABLE `users` (
	`username` varchar(50) NOT NULL PRIMARY KEY,
	`password` varchar(500) NOT NULL,
	`enabled` boolean NOT NULL
);

CREATE TABLE `roles` (
	`username` varchar(50) NOT NULL,
	`role` varchar(50) NOT NULL,
	UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
);

CREATE TABLE `permissions` (
    `role` varchar(50) NOT NULL,
    `resource` varchar(255) NOT NULL,
    `action` varchar(8) NOT NULL,
    UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
);

INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);

INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

`

注意事项:
1.需要在防火墙开放相关端口,如果你是云服务器,开放安全组,下面提供相关语句

## 开放端口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

PS:这里有点小问题,重启完防火墙之后,需要重启docker

重启docker

systemctl restart docker

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

8、访问页面

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

在这里插入图片描述