请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,关于VOLUME的一点疑问

据我所知,VOLUME有两种挂载方式:

1、不创建数据卷,直接把本地目录挂载到容器内的目录。这种方式优点明显,就是本地数据跟容器内的数据是同一份数据,完全同步,非常方便开发环境使用。

2、创建数据卷,需要在Dockerfile里面使用VOLUME指令创建容器内的挂载点。

疑问在第二种上面,我感觉第一种方式是可以满足各种需求场景的,数据迁移的话直接移动数据目录就可以了。

第二种情况下:

1、docker volume可不可以直接移动数据卷创建的本地文件目录?

2、如果不在Dockerfile里面使用VOLUME指令创建挂载点会怎样?上课的时候没有说到这一点,直接就是 -v Volume:ContainerDir 这样启动各个容器的,好像并没有什么问题,那么Dockerfile里面的VOLUME指令是不是没有作用?另外volume是可以不用事先创建的,运行的时候直接指定名字会自动创建。。

3、什么场景下必须创建volume,而不是挂载本地目录?

感谢老师!!!

正在回答

2回答

同学你好。数据卷是比目录挂载更高级的方案,数据卷可以在同时在多个容器间共享,而且我们还可以把构建数据卷的命令写到dockerfile里面。比如在数据卷中创建什么目录,创建什么文件都可以在dockerfile中规定,这样dockerfile在其他主机上构建的时候就自动构建出了数据卷。本地映射目录就得自己去弄初始化工作了。另外,PXC是不支持本地目录挂载的,只支持数据卷。

0 回复 有任何疑惑可以回复我~
  • 提问者 KeithTt #1
    不太明白在Dockerfile里面构建数据卷是什么意思。。。另外,如果数据卷里面的数据需要迁移到其他的节点上,可以直接copy数据卷的本地目录么?
    回复 有任何疑惑可以回复我~ 2018-07-02 13:37:50
  • dockerfile是一种文件,是构建容器的指令的集合。这个文件有什么用呢?比如我们构建镜像是很早时候的,我想在创建个新镜像,在里面安装最新的jdk等等程序,这时候dockerfile就有用了,执行一次,镜像就够建好了
    回复 有任何疑惑可以回复我~ 2018-07-02 13:43:33
  • 提问者 KeithTt 回复 神思者 #3
    这些我知道。。这里用来挂载的volume跟Image的数据层,我感觉这不是一回事吧。。可能我没表达清楚,或者是因为我并没有弄明白volume和image layer的关系...您说数据卷可以多处共享,其实一个目录也是也是可以多点挂载的。还有就是,是不是一定要在Dockerfile里面用VOLUME指令创建挂载点,才能挂载数据卷?
    回复 有任何疑惑可以回复我~ 2018-07-02 14:36:04
神思者 2018-07-02 13:29:11

数据卷是自动创建的,可以不提前创建

0 回复 有任何疑惑可以回复我~
  • 提问者 KeithTt #1
    好的,谢谢老师!
    回复 有任何疑惑可以回复我~ 2018-07-02 13:33:14
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信