Docker--容器中数据管理--RHEL7.2

容器中数据管理主要分为两种方式:数据卷和数据卷容器

1. 数据卷

  1)  数据卷是一个可供容器使用的特殊目录,它绕过文件系统,类似于linux下对目录执行mount操作。

    数据卷特性:

    (1)数据卷可在容器间共享数据

    (2)对数据卷的修改会立即生效

    (3)对数据卷的更新不会影响镜像

    (4)数据卷会一直存在知道没有容器使用 

  2)创建一个数据卷

    docker run时使用-v参数可以在容器内创建一个数据卷。

    在容器内创建数据卷挂载到/volume目录下,相当于容器间的共享目录:

    docker run -ti -v /volume1 --name "container1" centos:tag1 /bin/bash      

    将宿主机目录挂载到容器作为数据卷:

    docker run -ti -v /root:/volume2 --name "container2" centos:targ2 /bin/bash   #容器内挂载目录不存在时会自动创建。此时volume2可以共享宿主机目录/root里面的内容。

    挂载数据卷的默认权限是可读可写,可以设置为只读:

    docker run -ti -v /root:volume2:ro --name "container2" centos:tag2 /bin/bash

  注:不推荐挂载本地文件作为书卷,此种方法在Docker 1.1.0后续版本会报错,因此需要挂载文件时挂载其父目录即可。

2. 数据卷容器 

  容器间共享数据,尤其是持续更新的数据时可以用此,因为任何一个相关容器对数据卷的修改都会立即生效,更新到每一个挂载的容器中。

  1) 实验1: 容器c1间数据卷volume1, 容器c2挂载c1的数据卷,容器c3挂载c1的数据卷, 在容器c1的数据卷volume1中新建文件a.txt,查看c2和c3。

    (1)容器1建数据卷c1:

    docker run -ti -v /volume1 --name "c1" centos:tag1 /bin/bash

    (2)容器c2挂载c1的数据卷:

    docker run -ti --volumes-from c1 --name "c2" centos:tag2 /bin/bash

    (3)容器c3挂载c1的数据卷:

    docker run -ti --volumes-from c1 --name "c3" centos:tag3 /bin/bash

    (4)容器c1数据卷volume中新建文件a.txt, 查看c2和c3中挂载的volume中已经存在文件a.txt。

3. 删除数据卷容器

    在c1、c2、c3中删除volume时报错,提示正在使用无法删除,即只要c1、c2、c3存在其中的一个数据卷就仍存在。     

你可能感兴趣的:(Docker--容器中数据管理--RHEL7.2)