利用docker在不同机器使用一个mysql数据库数据
目地
平时测试学习时,需要在不同设备上(非同时)使用一个数据库,又不想每次恢复数据,也没有一个公共服务器。(公司与家电脑,笔记本多个电脑开发一个项目)
## 实现
docker
安装docker 略
docker中启动mysql
- 搜索镜像
docker search mysql
- 下载镜像
docker pull mysql
- 查看本地镜像
docker images
- 启动镜像
docker run -p 3306 --name mysqlrongqi -e MYSQL_ROOT_PASSWORD=123456 -d mysql
- -p 端口号 --name 新容器名 -e 指定mysql的root账户密码为123456 -d 镜像名
- 查看运行中的容器
docker ps
- 查看mysqlrongqi是否启动成功
修改mysql数据保存位置(默认docker不会同步里面的数据文件夹)
- 需要把放数据的文件夹挂载出来
- 创建容器中的存入目录
mkdir /work
- 把数据复制到新目录中
cp -r /var/lib/mysql /work
- 修改数据库配置文件,指定数据存放位置
vim /etc/mysql.conf.d/mysqld.cnf
- 修改datadir地址
datadir = /work/mysql
- 重启容器
docker restart mysqlrongqi
- mysqlrongqi 为容器名
- 导入数据,数据库中建表
- 打包镜像
docker commit -m "提交说明" -a "用户信息" 容器名 新镜像名
- 重新启动镜像(重要,不重启不生效)
docker start 新镜像名
- 查看数据
vim无法使用,命令找不到
- 进入容器
docker exec -it 容器名 /bin/bash
- 进入后,命令行前缀会显示容器id
- 安装vim
- 更新apt源
apt-get update
- 安装vim
apt-get install -y vim
导出导入镜像
docker save -o 文件名 镜像名:版本号
- 文件名是指 本地保存镜像的文件夹地址
docker load -i 本地镜像文件
- -i 表示 --input
从导入镜像再次启动mysql
- 不需要再指定密码了
docker run -p 3306:3306 --name 新容器名 -d 导入镜像名
#### 补充命令
- 删除镜像已经不用的镜像
docker rmi 镜像名:版本号
- 停止容器
docker stop 容器名
- 启动容器(已停止的容器)
-
docker start 容器名
-
docker stop 容器名
-
- 启动容器(已停止的容器)
docker start 容器名