docker挂载mysql卷重启容器后消失

docker run -d -v ./data:/var/lib/mysql -p 3306:3306 --name yang-mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

我想挂载个data卷存数据
为什么挂载卷重启容器后就没了。。。也不报错。
我将data目录换个地方,再run就又可以挂载上了。
再重启容器就又空了。

阅读 5.7k
1 个回答

首先,通过上面的那条命令启动后,当前目录会生成一个data的目录,会发现这个目录是空的,使用docker inspect yang-mysql获取容器的Mounts信息,查看Source的路径/var/lib/docker/volumes/data/_data下面,其实你的数据是存到了docker默认的存储目录,当你容器被删除的时候,这个目录以及里面的数据会跟随着删除,相对路径也就是指的/var/lib/docker/volumes/,与宿主机的当前目录无关。
所以想要实现当前目录挂载到容器内,需要将宿主机的路径写成绝对路径,也就是这样:
docker run -d -v $(pwd)/data:/var/lib/mysql -p 3306:3306 --name yang-mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
就可以实现数据的持久化

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进