Redis
创建Redis配置文件和目录
启动前需要先创建Redis外部挂载的配置文件(/home/redis/conf/redis.conf )之所以要先创建 , 是因为Redis本身容器只存在 /etc/redis 目录 , 本身就不创建 redis.conf 文件当服务器和容器都不存在redis.conf 文件时, 执行启动命令的时候 docker 会将 redis.conf 作为目录创建 , 这并不是我们想要的结果 。
## 创建目录
mkdir -p /usr/local/software/redis/conf
## 创建文件
touch /usr/local/software/redis/conf/redis.conf
修改配置文件
- appendonly yes 启动Redis持久化功能 (默认 no , 所有信息都存储在内存 [重启丢失] 。 设置为 yes , 将存储在硬盘 [重启还在])
- protected-mode no 关闭protected-mode模式,此时外部网络可以直接访问 (docker貌似自动开启了)
- bind 0.0.0.0 设置所有IP都可以访问 (docker貌似自动开启了)
- requirepass 密码 设置密码
vim /usr/local/software/redis/conf/redis.conf
appendonly yes
创建Redis容器并启动
docker run \
-d \
--name redis \
-p 6379:6379 \
--restart unless-stopped \
-v /usr/local/redis/data:/data \
-v /usr/local/redis/conf/redis.conf:/etc/redis/redis.conf \
redis:bullseye \
redis-server /etc/redis/redis.conf
命令解释
注意 :
- 命令中所有冒号前面的是主机配置,冒号后面的是redis容器配置。
- –restart
no,默认策略,在容器退出时不重启容器
on-failure,在容器非正常退出时(退出状态非0),才会重启容器
on-failure:3,指定启动的次数,在容器非正常退出时重启容器,最多重启3次
always,在容器退出时总是重启容器
unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
查看Redis是否运行
### 查看Docker运行中的容器
docker ps
docker ps | grep redis
Docker日志查看
docker logs redis
测试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
### 或者也可以直接通过Docker Redis 命令进入Redis控制台 (上面两个命令的结合)
docker exec -it redis redis-cli
进入有密码的Redis控制台
如果你设置了密码,需要通过如下命令进入Redis控制台
## 通过密码进入Redis控制台
redis-cli -h 127.0.0.1 -p 6379 -a 123456
Docker安装nacos
nacos介绍
Nacos是阿里巴巴开源的一款支持服务注册与发现,配置管理以及微服务管理的组件。用来取代以前常用的注册中心(zookeeper , eureka等等),以及配置中心(spring cloud config等等),Nacos是集成了注册中心和配置中心的功能,做到了二合一。
直接运行服务
可以直接用docker 启动服务,镜像不存在会自动拉取
docker run -d -p 8848:8848 --name nacos --env MODE=standalone nacos/nacos-server
运行容器后可以稍等下,等待nacos启动成功,受环境限制启动可能有些慢
登录页面测试
可以登录服务器测试以下
用户名:nacos 密码:nacos
Docker安装mysql
配置MySQL忽略大小写
创建MySQL挂载目录
# 创建MySQL配置的文件夹
mkdir -p /tmp/etc/mysql
# 编辑my.cnf配置文件
vi /tmp/etc/mysql/my.cnf
配置MySQL忽略大小写,在我们创建的MySQL配置文件挂载点的目录的my.cnf文件加入如下内容
[mysqld]
lower_case_table_names=1
创建MySQL数据目录
因为默认MySQL启动后他的文件是在容器中的,如果我们删除容器,数据也将会消失,我们需要将数据挂载出来。
#创建mysql存储的目录
mkdir -p /tmp/data/mysql
启动MySql
使用
docker run启动容器
docker run -d -p 3306:3306 -v /tmp/etc/mysql:/etc/mysql/mysql.conf.d/ -v /tmp/data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysql mysql:5.7.37
查看MySQL运行日志
现在MySQL容器起来了,并不代表MySQL已经成功启动,我们需要使用
docker logs命令查看MySQL的日志
docker logs -f mysql
该命令可以查看容器日志
-f是追踪打印日志,可以看到MySQL已经启动了
客户端连接MySQL
因为我们已经暴漏端口了,可以使用客户端工具连接MySQL
检查配置的大小写参数是否生效
SHOW VARIABLES LIKE '%case_table%';
查看容器挂载的配置文件
可以通过
docker exec -ti mysql /bin/bash命令登录容器,检查挂载的配置文件情况
# 登录容器
docker exec -ti mysql /bin/bash
我们可以看到我们修改的配置文件已经被挂载到了docker内部,这里面用到了exec命令,主要是在docker容器中运行命令,下面我们介绍下 命令格式
主要是在deocker容器中运行命令
docker exec [options] container command [arg...]
命令参数
| 名称 | 简写 | 描述 | ||
|---|---|---|---|---|
| --detach | -d | 后台运行模式,在后台执行命令相关命令 | ||
| --detach-keys | 覆盖容器后台运行的一些参数信息 | |||
| --env | -e | 设置环境变量 | ||
| --interactive | -i | 展示容器输入信息STDIN | ||
| --privileged | 为命令提供一些扩展权限 | |||
| --tty | -t | 命令行交互模式 | ||
| --user | -u | 设置用户名(format: <name | uid>[:<group | gid>]) |
| --workdir | -w | 指定容器内的目录 |
查看挂载的数据文件
可以看下挂载的数据文件是否存在
cd /tmp/data/mysql/ && ll