使用 Docker Volume 的功能 (二)

使用 Docker Volume 的功能 (二)

上篇已经介绍了如何使用在执行docker run 指令,把Volume Mount 起来使得Container 的文件夹路径可以Mapping 到实体主机的文件夹路径,今天要介绍的部份是透过撰写Dockerfile 的方式使用Volume 的指令,这样使用者就不用在执行docker run 指令时指定-v 参数,就可以把Volume Mount 起来。

另外今天还会 Demo 如何让 Container 之间的资料共享

Example1:

撰写一个Dockerfile 使用VOLUME 指令,把Docker的Image Build起来,然后启动Docker Container,把资料写进在Docker Container里面,最后使用docker inspect 指令,找到Mapping 到实体主机的文件夹路径,确认是否有看到之前写在Container 里面的档案。

  1. Dockerfile 如下

使用 Docker Volume 的功能 (二)

另外在 VOLUME 指令的写法可以写成多个路径,如下

使用 Docker Volume 的功能 (二)

Build Image 指令如下

使用 Docker Volume 的功能 (二)

输入 docker build 指令时,文件夹要切换到和 Dockerfile 档案同一层的文件夹路径,Build 完 Image 之后的结果如下画面

使用 Docker Volume 的功能 (二)

启动 Docker Container 指令如下

使用 Docker Volume 的功能 (二)

因为 VOLUME 已经写在 Dockerfile 里,所以在使用 docker run 指令时没有给 -v 参数

在 Container 里面写入一个档案,如下画面

使用 Docker Volume 的功能 (二)

在实体主机上使用 docker inspect 指令,找到 Volume 在实体主机的文件夹路径

使用 Docker Volume 的功能 (二)

e2987aaab700 为 ContainerID,也可以使用指定 Container Name 的方式

使用 root 权限,切换到 Volume 的实体主机的文件夹路径之后,可以看到在第4步骤在 Container 里面写的档案,也可以在实体主机的文件夹看到 helloworld.txt 的档案,画面如下

使用 Docker Volume 的功能 (二)

Example2:

如何让 Container 和 Container 之间的资料共享,可以使用以下的方式

启动第一个 Container 指令如下

使用 Docker Volume 的功能 (二)

启动第二个 Container 指令如下

使用 Docker Volume 的功能 (二)

--volumes-from 参数指定 Container Name 为 Container1 的 Volume 资料和Container2 做共享

测试二个 Container 之间资料是否能共享,画面如下

使用 Docker Volume 的功能 (二)

左边的Container1 切换到/data 资料夹之后建立一个helloworld.txt 的档案,之后在右边的Container2 切换到/data 资料夹之后查看helloworld.txt 的档案内容为HELLOWORLD,这样就代表了Container 之间的资料有做到共享的效果。

今天介绍了 Dockerfile Volume 的用法以及 Container 之间的资料做共享,不用另外的架设 file server 就可以分享资料,使资料在使用上更加的方便,对于在备份资料方面也更加的简单。



分享到:


相關文章: