运行在容器里的 MySQL 删除数据目录依然可以正常使用,这是什么原因? 同样的步骤在虚拟机操作,MySQL 就无法正常使用。
操作步骤如下:
// 创建 mysql 挂载目录
root@aliyun:~# mkdir /data/mysql
// 启动一个 mysql
root@aliyun:~# docker run -p 3306:3306 -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
root@aliyun:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5a27786e1657 mysql "docker-entrypoint.s…" 32 seconds ago Up 31 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp relaxed_jang
// 进入 mysql 容器
root@aliyun:~# docker exec -it 5a27786e1657 /bin/bash
root@5a27786e1657:/# ls /var/lib/mysql/
'#ib_16384_0.dblwr' auto.cnf binlog.index client-cert.pem ib_logfile0 ibtmp1 performance_schema server-cert.pem undo_001
'#ib_16384_1.dblwr' binlog.000001 ca-key.pem client-key.pem ib_logfile1 mysql private_key.pem server-key.pem undo_002
'#innodb_temp' binlog.000002 ca.pem ib_buffer_pool ibdata1 mysql.ibd public_key.pem sys
// 删除容器里的 mysql 数据目录
root@5a27786e1657:/# rm -rf /var/lib/mysql/
rm: cannot remove '/var/lib/mysql/': Device or resource busy
root@5a27786e1657:/# ls /var/lib/mysql/
root@5a27786e1657:/# exit
root@aliyun:~# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.17.108 netmask 255.255.192.0 broadcast 172.17.63.255
ether 00:16:3e:00:46:06 txqueuelen 1000 (Ethernet)
RX packets 3678 bytes 638716 (638.7 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3294 bytes 1044025 (1.0 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
root@aliyun:~# netstat -nltup|grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1329/docker-proxy
// 删除 mysql 数据目录后,可以正常创建一个测试库 foobar
root@aliyun:~# mysql -uroot -p123456 -h172.17.17.108 -P 3306 -e "create database foobar;show databases;"
mysql: [Warning] Using a password on the command line interface can be insecure.
+--------------------+
| Database |
+--------------------+
| foobar |
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
root@aliyun:~# ls /data/mysql/
foobar
root@aliyun:~# ls /data/mysql/foobar/
root@aliyun:~#
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.