前言:容器安装的好处是,相互隔离互不影响,相比于传统的一个linux下安装多个服务,其中一个服务报错可能影响其他服务的问题,现在一个服务就是一个容器互不影响
目录
1、安装MySQL
1.1、拉取镜像
#用docker安装上mysql,可以去docker仓库里搜索
mysql sudo docker pull mysql:5.7
1.2、创建并启动
#docker run 用来创建并启动一个容器
#第一个3306端口是,liunx的3306端口,第二个3306端口是docker容器里面mysql的端口
#让他们一一对应,相当于访问liunx的3306端口就是访问docker里面mysql的端口
#-p 就是端口映射
#--name mysql 给当前容器命名为mysql
#v /mydata/mysql/log 在linux的主目录下的mydata下的mysql下的log文件夹
#:/var/log/mysql 与docker容器下的主目录下的var下的log下的mysql文件,
#进行一个挂载(容器里的mysql数据库运行产生的日志,我们可以直接在linux系统中进行查看),相当于容器里面的一个快捷方式放在linux里面
#第一个-v是mysql日志,第二个是mysql运行产生的数据持久化方便以后在linux里面备份数据库,第三个是mysql配置信息
#root账号的密码
sudo docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
1.3、外部创建映射文件
#退出进入的容器
exit
#方便以后修改容器里面mysql的配置,在外部linux中创建mysql的映射文件
#进入linux中的mysql映射文件
cd /mydata/mysql/conf
#里面是没有my.cnf,编辑(编辑文件,没有它会自行创建并编辑)
vi my.cnf
注: (因为有目录映射,所以我们可以直接在镜像外执行
vi /mydata/mysql/conf/my.conf
)
#进入以后按i键,左下角会有一个insert,表示插入的意思
#将下面的文件复制进去
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
#保存退出vi编辑模式
按ESC键,下面的insert会消失,然后:wq
#配置好了重启mysql
docker restart mysql
#查看是否配置好,在liunx中用交换模式进入docker里面的mysql
docker exec -it mysql /bin/bash
#进入以后,根据上面的映射,我们得进入配置文件
cd /etc/mysql
#查看my.cnf文件
cat my.cnf
1.4、设置自启
#设置mysql容器在docker启动的时候启动
docker update mysql --restart=always
2、安装Redis
<sudo密码是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具>
安装Redis这里使用root管理员安装
# 切换成root用户
su root
2.1、拉取镜像
#下载redis镜像(后面没有:说明直接下载最新的redis)
docker pull redis
2.2、创建并启动
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
#注 mkdir是创建文件夹,touch,vi都是创建文件
docker run -p 6379:6379 --name redis \
-v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
#安装完成后,检查一下
docker ps
2.3、开启redis持久化
#直接进入redis客户端
docker exec -it redis redis-cli
#开启redis持久化
vi redis.conf
#输入i插入(让redis启用AOF(数据发生改变就写入)的持久化方式)
appendonly yes
2.4、设置自启
#设置redis容器在docker启动的时候启动
docker update redis --restart=always
(#重启命令 redis,docker restart redis)
本地测试
在本地存放vagrantfile的地方cmd<不懂的可以看我上一篇http://t.csdn.cn/070XD>
启动虚拟机 vagrant up
连接虚拟 vagrant ssh
切换成root管理员 su root
<因为我们使用的是vagrant创建的虚拟机,root账号密码默认是vagrant>
查看端口 ip addr
查看mysql,redis是否在运行
使用可视化工具连接mysql
<数据库密码上面设置的是root>
使用可视化工具连接Redis