一、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,进行验证

好文链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。