一、docker安装MySQL
1.1、安装mysql5.7
直接运行下面指令即可
# 安装指令
docker run -d -p 3306:3306 --privileged=true -v /home/liucc/mysql/log:/var/log/mysql -v /home/liucc/mysql/data:/var/lib/mysql -v /home/liucc/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
指令详解
docker run -d -p 3306:3306 --privileged=true # -d:以后台方式运行容器;-p:端口映射,宿主机端口:容器端口;--privileged=true:给容器宿主机相同的权限
-v /home/liucc/mysql/log:/var/log/mysql # -v:挂载数据卷,持久化容器数据到宿主机指定目录,宿主机目录:容器内目录
-v /home/liucc/mysql/data:/var/lib/mysql
-v /home/liucc/mysql/conf:/etc/mysql/conf.d
-e MYSQL_ROOT_PASSWORD=123456 # MYSQL_ROOT_PASSWORD:指定数据库密码
--name # 指定容器的名称
mysql mysql:5.7 # mysql:5.7 <镜像>:<版本号>
1.2、知识补充
到上面的步骤里,mysql已经正确安装了,只不过还会存在一个问题:中文数据无法插入解决办法:添加mysql配置文件
# 1.进入配置文件目录
cd /home/liucc/mysql/conf
# 2.添加配置文件
vim my.cnf
# 输入如下配置项
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
重启mysql容器
docker restart mysql
注意:
配置文件修改后,一定要重启容器配置文件修改,且容器重启后,也只是新的db与table才能添加中文数据,之前已经创建的数据库仍然无法插入中文数据
访问mysql服务,检查字符编码有无更改
docker exec -it mysql bash # 进入mysql容器
mysql -uroot -p123456 # 输入账号密码
# 查看字符编码
SHOW VARIABLES LIKE 'character%'
navicat客户端插入中文数据
在容器中查看这条数据,是否正常显示
结论
添加配置文件 + 重启容器检查mysql服务端字符编码建新库、新表插入中文数据
注:旧DB无效,新DB才有效!!!
测试:加入当前mysql容器实例被干掉了,之前的工作数据还能找到吗?是否也被删掉了?
可以发现,工作数据还是存在的!这就是数据卷的魅力之处!!!
二、docker安装Redis
简单启动方式就略过了,正式工作环境中也不会允许以这样不安全的方式来启动容器
拉取镜像
docker pull redis:6.2.13 # 拉取redis镜像
在docker的宿主机上创建新目录/app/redis
mkdir -p /app/redis
随便在网上找一个redis的原生配置文件,将其拷贝到/app/redis/目录下
cp redis.conf /app/redis
redis的原始配置文件
修改redis.conf配置文件
# 第一处:设置redis密码
requirepass 123456
# 第二处:允许redis进行外部连接。注释掉该行配置
# bing 127.0.0.1
#第三处:将"daemonize yes"改为no,或者注释掉该行配置
原因是默认让redis以后台守护线程方式启动,而docker则要求必须要有前台进程存在,否则会杀死该进程。
# 第四处:开启redis数据持久化 appendonly yes 可选
以数据卷方式启动redis容器
# 语法
docker run -p 6379:6379 --name myr3 --privileged=true -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data -d redis:6.2.13
# 【参数详解】
docker run -p 6379:6379 --name myr3 --privileged=true # 开启授权
-v /app/redis/redis.conf:/etc/redis/redis.conf # 数据卷映射配置文件
-v /app/redis/data:/data # 数据卷映射工作区数据
-d redis:6.2.13
redis-server /etc/redis/redis.conf # 让redis启动时加载指定位置的配置文件
容器内部访问redis
# 进入redis容器
docker exec -it <容器id> bash
# 内部访问redis服务
redis-cli -a 123456 # 填写自己设置的密码
# 测试
set k1 v1 # 添加值
get k1 # 获取值
外部客户端工具访问redis,我这里通过redis客户端工具进行访问
如何验证redis启动时加载的是我们指定的配置文件? 默认情况下,redis的数据库是16个 修改配置文件,让其数据库最大数为10,进行验证
好文链接
发表评论