docker 技术入门实战 第4天 数据管理

一.在使用docker中,往往需要查看容器内应用内产生的数据,或者需要把容器内的数据进行备份,甚至多个容器之间的数据共享,因此docker会涉及到容器的数据管理操作。

二.容器中数据管理的主要方式: 1)数据卷   2)数据卷容器

三.数据卷

1.数据卷概念:

数据卷是一个可供容器使用的特殊目录,数据卷的使用类似于linux对目录或者文件进行mount操作

2.数据卷的特性:

a.数据卷可以在容器之间共享和重用

b.对数据卷的修改会立即生效

c.对数据卷的更新不会影响镜像

d.卷一直存在,直到没有容器使用

3.容器内创建数据卷:

a.挂载一个主机目录作为数据卷:

docker run -itd   --name  名称 -v  主机目录:容器目录:权限  镜像名称 命令

-v   指定挂载本地的已有目录到容器中,也可以是单个文件

--name  指定容器的名称

-i    将容器的标准输出打开

-t   打开一个伪终端并绑定到标准输出上

-d  容器以守护进程启动

注意:

1).主机目录必须是绝对路径,如果宿主,主机中没有目录,会自动创建

2)如果docker中目录不存在,会自动创建

3)挂载数据卷的默认权限是读写(rw),用户也可以自行设置,ro指定为只读

实例:

docker 技术入门实战 第4天 数据管理_第1张图片
挂载一个主机目录作为数据卷

四.数据卷容器

1.数据卷容器就是一个普通的容器,专门用它提供数据卷供其他容器挂载使用。

2.数据卷容器的创建和其他容器的关联:

a.数据卷容器的创建

命令:docker run -itd  -v 数据卷位置 --name 容器名称  镜像名

数据卷容器

b.创建其他容器并挂载volume容器中的数据卷(使用参数--volumes-from)

命令:docker run -itd  --volumes-from 数据卷容器 --name 容器名称  镜像名

docker 技术入门实战 第4天 数据管理_第2张图片
.创建其他容器并挂载volume容器中的数据卷

c.查看数据是否是同步一样的

docker 技术入门实战 第4天 数据管理_第3张图片
数据是否是同步

备注:

1)可以多次使用--volumes-from参数来从多个容器挂载多个数据卷

2)使用--volumes-from参数所挂载的数据卷容器自身并不需要保持运行状态。

3)还可以从其他已经挂载容器卷的容器来挂载数据卷:

docker run -it -v /tmp:/data --name ubuntu ubuntu       ######创建一个挂载容器卷的容器

docker 技术入门实战 第4天 数据管理_第4张图片
其他已经挂载容器卷的容器来挂载数据卷

五.删除容器和删除数据卷的容器:

docker rm 容器ID                 #删除容器

docker rm -v 容器ID              #删除数据卷的容器

数据卷 是被设计用来持久化数据的,它的生命周期独立于容器,Docker 不会在容器被删除后自动删除 数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的 数据卷。

执行docker run命令带--rm命令选项,等价于在容器退出后,执行docker rm -v

容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止,不会因父容器的关闭而造成数据不同步的现象.

六.利用数据卷容器迁移数据

1.备份数据(减轻原容器的压力)

docker run -it --volumes-from volume -v /backup:/opt --name backup ubuntu

tar zcfP  /backup/data.tar.gz /data 

命令解释:

a.在本地创建一个backup的容器,挂载数据卷容器,

b.将本地的/backup目录映射到work容器/opt的目录下

c.备份/data中的内容到backup中,就是将备份内容放到宿主主机的/opt目录下

2.恢复数据

docker run  -itd -v /data --name recovery  ubuntu /bin/bash      #创建一个带有数据卷的容器recovery

docker run -it --volumes-from  recovery  -v /backup:/opt  ubuntu  

进入容器中: tar zcf /opt/data.tar.gz  -C /data

你可能感兴趣的:(docker 技术入门实战 第4天 数据管理)