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:开启数据持久化(如果挂载了外部的配置文件并设置过了,就无需再次设置)