Docker 很便捷,最开始有这种感受是用一行命令去启动了 MySQL
服务。想当初刚接触数据库那会,那么费力气的安装MySQL
也是服气。(捂脸哭~
但是在启动MySQL
容器之前,我们需要做些准备工作,这是因为数据库本身的特殊性,我们需要将容器的数据映射到主机的目录中,这样就不担心手滑将容器删除导致数据丢失了。
准备工作
首先我们准备以下目录,你也可以选择其他目录,到时候修改下命令中的挂载目录位置即可。
1 | mkdir -p /opt/docker/mysql/{conf,data} |
然后创建MySQL的配置文件
1 | vi /opt/docker/mysql/conf/my.conf |
添加如下配置
1 | [mysqld] |
准备好我们便可以创建容器。
创建 MySQL
创建容器(就是这行命令从零启动了MySQL
服务)
1 | docker run -d -p 3306:3306 --privileged=true -v /opt/docker/mysql/conf/my.cnf:/etc/mysql/my.conf -v /opt/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql-dev mysql:5.7 |
补充说明:
-p 3306:3306
将容器的 3306 端口映射到主机的 3306 端口,宿主机:容器-v /opt/docker/mysql/conf/my.cnf:/etc/mysql/my.conf
将主机/opt/docker/mysql/conf/my.conf挂载到容器的 /etc/mysql/my.cnf-v /opt/docker/mysql/data:/var/lib/mysql
将主机/opt/docker/mysql/data挂载到容器的 /var/lib/mysql-e MYSQL_ROOT_PASSWORD=123456
初始化 root 用户的密码--name mysql-dev
为容器命名
然后通过docker ps
命令就可以查看正在运行的docker服务
1 | [root@localhost /]# docker ps |
用你喜欢的数据库可视化工具去连接MySQL
服务,successful !!!
创建 Redis
如果我们本地没有镜像,在启动Redis
服务的时候,会自动尝试pull,所以我们可以通过一行命令就能启动Redis
服务。如果通过第二种方式启动的话,需要提前准备Redis
的配置文件
首先我们准备以下目录,你也可以选择其他目录,到时候修改下命令中的挂载目录位置即可。
1 | mkdir -p /opt/docker/redis/{conf,data} |
然后去下载一个对应版本的 redis.conf
,放到下面目录中
1 | /opt/docker/redis/conf/redis.conf |
然后需要修改以下几点:
- 注释
bind 127.0.0.1
- 注释掉
daemonize yes
,或者设置为:daemonize no
- 如果要设置密码:
requirepass your-password
- 设置数据持久化:
appendonly yes
下面提供了两种方式启动 Redis
1 | # 启动一个Redis服务 |
然后通过docker ps
查看处于活跃状态的docker服务
1 | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES |
补充说明:
一般使用Redis
会做高可用,设置密码,挂载外部的data
以及conf
,做数据持久化,以下是对上述命令做一些解释以及补充,
-v /opt/docker/redis/conf/redis.conf:/etc/redis/redis.conf
:挂载配置文件-v /opt/docker/redis/data:/etc/redis/data
:映射data
目录redis-server /etc/redis/redis.conf
:服务使用指定的配置文件--name mysql-dev
:为容器命名--privileged=true
:赋予容器内的root拥有真正root权限--requirepass "pwd"
:给Redis
设置密码(如果挂载了外部的配置文件并设置过了,就无需再次设置)--appendonly yes
:开启数据持久化(如果挂载了外部的配置文件并设置过了,就无需再次设置)