第五讲 Docker数据管理

一. 数据卷

        想必大家都使用过U盘、光盘等外部存储设备,通过将U盘等外部存储设备挂载到系统中的一个挂载点,即可实现对这些外部设备的读写操作。

        数据卷即供容器使用的一个特殊目录,和Linux系统挂在U盘等存储设备时使用的mount命令非常类似。对数据卷的修改立即生效,并且不会影响生成的镜像,卷会一直存在,直到没有容器使用它。

        通常我们会挂载一个主机目录作为数据卷,如数据库的存储目录;也会挂载一个主机文件作为数据卷,如应用的配置文件。线面,我们分别介绍如何挂载一个目录,以及如何挂载一个文件作为数据卷。

1.1 挂载一个主机目录作为数据卷

        挂载数据卷的命令为:docker run -itd --name centos01 -v /opt/data/centos01:/data 192.168.255.128:5000/centos;使用 -v 参数创建数据卷,并且可以使用多个-v参数为容器创建多个数据卷。冒号之前的部分表示宿主机的真实目录,冒号之后的部分表示容器中的虚拟目录,即挂载点。

        对数据卷的操作,其实都是对宿主机真实目录的操作:进入容器,在 /data 下创建 c.txt 文件,则在宿主机的真实目录中也将创建一个 c.txt 文件(注:和数据卷相关的目录,无论是容器还是宿主机的目录,都将在创建和运行容器时自动生成):

         此外,创建数据卷时,还可以使用 ro 参数来指定只读数据卷(默认为rw,可读可写),容器将无法对数据卷做修改,详情如下:

1.2 挂载一个文件作为数据卷

注:宿主机中必须存在要挂载的文件,否则将创建目录,并挂载相应的目录。 

二. 数据卷容器

        数据卷实现了在在宿主机和容器之间共享数据,数据卷容器则可以帮我们实现在容器间共享数据。数据卷容器的本质也是一个普通数据卷,只不过它专门提供其它容器挂载,可以在容器之间共享和重用。使用数据卷容器,首先需要在容器内创建一个数据卷,作为数据卷容器:

数据卷容器使用 -v 参数指定挂载容器的目录,此处为 centos01 容器中的 /data 目录。进入容器 centos01 并在 /data 目录下创建了2个文件。

        接下来,我们创建并运行2个容器 centos02 和 centos03,并分别挂载 centos01 数据卷容器:

        进入容器 centos02 ,在/data目录下即可看到我们在 centos01 数据卷容器中创建的文件:

       进入容器 centos03,在/data目录下即可看到我们在 centos01 数据卷容器中创建的文件,以及刚刚在 centos02 中创建的文件:

        综上,借助数据卷容器 centos01,实现了在容器 centos01、centos02 和 centos03 之间的数据共享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章