Docker 跑 MySQL 没挂载 Volume?恭喜你获得了一张「数据清零体验卡」
一个让运维老哥笑出声的悲伤故事
话说有个萌新部署了一个 MySQL 容器,吠哼吠哼配置了一整天,把数据库建好、表建好、数据导入好,然后他执行了:docker rm -f mysql_container && docker run --name mysql_container mysql:8。然后他发现——库没了,表没了,数据也没了。
他对着屏幕发出了三个灵魂拷问:“我是谁?我在哪?我为什么要删容器?”
故事告诉我们:Docker 容器的文件系统是临时的。容器删除 = 数据消失,跟谈了三个月恋爱突然被拉黑一样彻底。
解决方案:Volume(数据卷)挂载。加了 -v mysql_data:/var/lib/mysql 之后,MySQL 的数据就写到了宿主机的一个特殊目录(/var/lib/docker/volumes/ 下面)。这时候你删容器、重建容器、升级版本——数据稳如老狗。
任何有状态的服务(MySQL、Redis、MongoDB、PostgreSQL)——不加 Volume 等于裸奔,数据丢了别怪我没提醒你。