Docker-(基础服务)-数据库安装-简单版: Redis数据库,Mysql数据库

一、概述

使用docker来启动数据库服务时,可以很轻松和简单的安装数据库服务。

但是,在安装的时候,有些坑必须要避开。

二、Docker部署Mysql

2.1、简单的直接安装

#运行mysql镜像
docker run -it p 3306:3306 --name mysql5.7 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

#进入mysql容器中,操作
docker exec -it mysql5.7 /bin/bash

#进入mysql客户端
mysql -uroot -p123456

#创建表,插入数据等。

使用这种方式是有问题的,无法解决中文乱码的问题,当容器被删除时,数据库中的数据也会被删除掉。这种方式是错误的。

2.2、实战版【解决中文乱码,数据备份】

1、创建容器时,配置容器数据卷

docker run -d -p3306:3306 --privileged=true -v /home/lhz/mysql/log:/var/log/mysql -v /home/lhz/mysql/data:/var/lib/mysql -v /home/lhz/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql5.7 mysql:5.7

-d 后台运行
-v 挂载容器卷,将容器mysql的数据、日志和配置文件挂载到主机中
--privileged 开放权限
-e 设置环境变量
--name 设置容器名
最后是 镜像名或镜像id

将mysql的配置,数据存放位置,日志挂载到主机中。

2、修改mysql的配置文件,设置字符集编码,解决中文乱码问题

#主机中操作:
cd /home/lhz/mysql/conf
vim my.cnf

#插入下面内容
[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8

3、重启容器

docker restart mysql5.7

4、测试

在mysql容器中创建数据库,创建表,插入中文,发现没有中文乱码

将mysql容器删除掉: docker rm -f mysql:5.7

重新执行步骤:1,2,3.  再查看之前插入的数据是否在。

三、Docker部署Redis

3.1、简单使用

1、创建redis容器

docker run -d -p6379:6379 redis:6.0.8

2、进入redis容器

docker exec -it redis6.0.8 /bin/bash

#测试:
redis-cli
set name lhz
get name

3.2、实战使用

1、准备redis的配置文件:

#在宿主机创建目录/apps/redis
#将redis.conf 文件模板拷贝到/apps/redis 目录下 ,这个配置文件需要自己去下载

修改redis.conf:
#密码链接
requirepass 123

#允许外界连接
注释掉bind 127.0.0.1

#daemonize no  #后台启动
将daemonize yes 设置为 no 该配置和docker run 中的 -d参数冲突,会导致容器一直启动失败

#开启数据持久化
appendonly yes

2、创建容器

docker run -d --name redis6.0.8 -p 6379:6379 --privileged=true -v /apps/redis/redis.conf:/etc/redis/redis.conf -v /apps/redis/data:/data  redis:6.0.8 redis-server /etc/redis/redis.conf

-d 后台运行
--name 设置名字
-v 设置卷
--privileged =true 开放权限
最后的redis-server /etc/redis/redis.conf 设置redis使用哪个redis配置文件启动

这样运行的redis容器,可以在主机端修改配置文件,数据可以实现持久化,即使删除了redis容器,再以相同的方式运行起来,数据不会丢失。

你可能感兴趣的:(docker,1024程序员节)