Docker安装MySQL
个人觉得像数据库之类的基础设施在线上环境直接物理机安装使用可能会好些。但是在开发测试环境用docker容器还是比较方便的。这里学习下docker安装mysql使用。
1. MySQL 镜像库地址
MySQL 镜像库地址:https://hub.docker.com/_/mysql/tags
这里是官方镜像库,可以在这挑选需要的版本的mysql镜像。
2. 拉取 MySQL 镜像
拉取最新版本的镜像
docker pull mysql:latest
3. 运行容器
运行为容器
docker run -d --name mylife.mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=Abc123456. mysql
参数说明:
- -d 后台运行容器
- –name 为容器指定一个名称
- -p 指定端口映射,格式为:主机(宿主)端口:容器端口
- -e 设置环境变量(MYSQL_ROOT_PASSWORD=Abc123456.:设置 MySQL 服务 root 用户的密码)
最后的mysql为使用的镜像
因为官方这MySQL镜像数据默认放在 /var/lib/mysql 目录下,且这目录是挂载在宿主机上的,这会导致我们用这容器重新生成的镜像丢失数据。所以这里要改下MySQL配置文件,把数据放到别的目录下。 - 进入容器内执行命令
docker exec -it mylife.mysql bash
- 修改配置文件
修改配置文件my.cnf,把数据目录改为 /data/mysql
修改前配置文件内容:
创建数据目录并修改配置my.cnf
mkdir -p data/mysql
sed -i "s#datadir.*/var/lib/mysql#datadir=/data/mysql#g" /etc/mysql/my.cnf
修改后配置文件内容:
- 重启容器
docker restart mylife.mysql
4. 连接数据库
容器运行成功后就可以连接该数据库了,这里尝试用Navicat连接。
5. 创建库
在容器上的MySQL创建需要的库和表。
6. 创建含库和表的镜像
用创建好库和表的容器创建镜像
docker commit -a "tdb" -m "mylife database v1" mylife.mysql mylife.mysql:v1
参数说明:
- -a 提交的镜像作者
- -m 提交时的说明文字
- mylife.mysql 容器名称
- mylife.mysql:v1镜像名及tag
7. 开发环境数据库容器
用刚创建的数据库镜像运行一个开发环境的数据库容器
docker run -d --name mylife.dev.mysql -p 30001:3306 -e MYSQL_ROOT_PASSWORD=Abc123456. mylife.mysql:v1
连接开发环境数据库,发现带有库和表
8. demo环境数据库容器
demo环境在云上的linux上,可以把镜像上传到hub上,再在linux上下载该镜像,但是我这死活上传失败,只好用导出再导入的方法。
- 导出镜像
把镜像[mylife.mysql:v1]导出
docker save -o F:\\study\\docker\\images\\mylife.mysql.v1.tar mylife.mysql:v1
- 上传到Linux,再载入该镜像
docker load -q -i /usr/docker/images/mylife.mysql.v1.tar
- 运行容器
docker run -d --name mylife.dev.mysql -p 30101:3306 -e MYSQL_ROOT_PASSWORD=Abc123456. mylife.mysql:v1
连接开发环境数据库,发现带有库和表