docker run -d -p 3306:3306 -v /data/mysql:/var/lib/mysql mysql
如上所示,挂载了宿主机的/data/mysql目录,但为什么运行后,宿主机的/data/mysql目录没有生成文件呢?实际上容器中的/var/lib/mysql目录下是有很多文件的,这是为什么呢?
还是,就是如果要迁移容器,那mysql的数据不是都会丢失,要怎么做到方便迁移呢?
docker run -d -p 3306:3306 -v /data/mysql:/var/lib/mysql mysql
如上所示,挂载了宿主机的/data/mysql目录,但为什么运行后,宿主机的/data/mysql目录没有生成文件呢?实际上容器中的/var/lib/mysql目录下是有很多文件的,这是为什么呢?
还是,就是如果要迁移容器,那mysql的数据不是都会丢失,要怎么做到方便迁移呢?
挂载到容器是对宿主机是可见的,使用inspect一下看看是否成功挂载上,container logs查看一下容器的日志看看是否有什么异常。迁移容器想要方便迁移可以起一个数据卷容器,其他容器使用--volumes-from挂载数据卷容器,具体的迁移操作可以去翻阅相关文档或书籍。
1 回答605 阅读✓ 已解决
1 回答557 阅读
72 阅读
挂载是把宿主机的目录挂进容器,而不是反之。所以镜像里的文件在宿主机上当然不可见。
Dockerfile 里可以使用 VOLUME 指示在挂载到指定的目录时,经 image 该目录下的文件拷贝至宿主机。
注意,对容器的修改不会保存至 image 。如果将宿主机的目录挂载至了容器,那么修改会留在宿主机上。