实验要求
使用容器运行mysql:5.6版本,连接到数据库中做数据测试修改,使数据能够持久保持。
然后删除5.6版本容器,基于之前的数据,再创建mysql:5.7版本,并且使用之前5.6版本留下的数据
mysql:5.6操作
创建mysql:5.6容器
[root@servera ~]# docker run --name mysql-5.6 -p 3307:3306 -v /mysql/data/:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.6
#-v 为指定映射的目录 , 本机:容器
#-e 为指定数据库密码
查看是否自动创建映射目录
[root@servera ~]# cd /mysql/data/
[root@servera data]# ll
容器检查
[root@servera data]# docker exec -it mysql-5.6 bash
root@9af4961ea152:/# cd /var/lib/
apt/ misc/ mysql-files/ pam/
dpkg/ mysql/ mysql-keyring/ systemd/
root@9af4961ea152:/# cd /var/lib/mysql
mysql/ mysql-files/ mysql-keyring/
root@9af4961ea152:/# cd /var/lib/mysql
root@9af4961ea152:/var/lib/mysql# ls
auto.cnf ib_logfile0 ib_logfile1 ibdata1 mysql performance_schema
进入数据库,创建测试
root@9af4961ea152:/var/lib/mysql# mysql -uroot -p123
mysql> create database test;
Query OK, 1 row affected (0.00 sec)
mysql> use test;
mysql> create table stu(id int(10),name varchar(20),age int(10));
Query OK, 0 rows affected (0.00 sec)
mysql> insert into stu values(1,"zhangsan",18);
Query OK, 1 row affected (0.00 sec)
删除容器
[root@servera data]# docker rm -f mysql-5.6
mysql-5.6
#映射的数据还在
[root@servera data]# ls
auto.cnf ibdata1 ib_logfile0 ib_logfile1 mysql performance_schema test
检查映射目录
#发现容器映射目录多了个test库
root@9af4961ea152:/var/lib/mysql# ls
auto.cnf ib_logfile0 ib_logfile1 ibdata1 mysql performance_schema test
#这里也多了一个stu
[root@servera ~]# cd /mysql/data/
[root@servera data]# ls
auto.cnf ibdata1 ib_logfile0 ib_logfile1 mysql performance_schema test
[root@servera data]# cd test/
[root@servera test]# ls
db.opt stu.frm stu.ibd
mysql:5.7操作
创建mysql:5.7容器
运行5.7的容器,映射文件相同
[root@servera data]# docker run --name mysql-5.7 -p 3307:3306 -v /mysql/data/:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=123 -d --privileged=true mysql:5.7
# --privileged=true 此选项提供了对主机系统资源更深层次的访问权限
检查文件
[root@servera data]# docker exec -it mysql-5.7 bash
bash-4.2# cd /var/lib/mysql
bash-4.2# ls
auto.cnf client-key.pem ibtmp1 private_key.pem test
ca-key.pem ib_logfile0 mysql public_key.pem
ca.pem ib_logfile1 mysql.sock server-cert.pem
client-cert.pem ibdata1 performance_schema server-key.pem
登录数据库检查
与之前插入的数据相同
bash-4.2# mysql -uroot -p123
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
mysql> select * from stu;
+------+----------+------+
| id | name | age |
+------+----------+------+
| 1 | zhangsan | 18 |
+------+----------+------+
1 row in set (0.00 sec)
插入新数据
尝试插入数据,功能也不影响
mysql> insert into stu values(2,"lisi",20);
Query OK, 1 row affected (0.00 sec)
mysql> select * from stu;
+------+----------+------+
| id | name | age |
+------+----------+------+
| 1 | zhangsan | 18 |
| 2 | lisi | 20 |
+------+----------+------+
2 rows in set (0.00 sec)
Comments | NOTHING