docker挂载的文件怎么找不到呢?

docker run -d -p 3306:3306 -v /data/mysql:/var/lib/mysql mysql

如上所示,挂载了宿主机的/data/mysql目录,但为什么运行后,宿主机的/data/mysql目录没有生成文件呢?实际上容器中的/var/lib/mysql目录下是有很多文件的,这是为什么呢?

还是,就是如果要迁移容器,那mysql的数据不是都会丢失,要怎么做到方便迁移呢?

阅读 15.1k
2 个回答

挂载是把宿主机的目录挂进容器,而不是反之。所以镜像里的文件在宿主机上当然不可见。

Dockerfile 里可以使用 VOLUME 指示在挂载到指定的目录时,经 image 该目录下的文件拷贝至宿主机。

注意,对容器的修改不会保存至 image 。如果将宿主机的目录挂载至了容器,那么修改会留在宿主机上。

挂载到容器是对宿主机是可见的,使用inspect一下看看是否成功挂载上,container logs查看一下容器的日志看看是否有什么异常。迁移容器想要方便迁移可以起一个数据卷容器,其他容器使用--volumes-from挂载数据卷容器,具体的迁移操作可以去翻阅相关文档或书籍。

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