Docker 容器的数据管理

docker 容器的数据卷

什么是数据卷(DataVolume)

数据卷是经过特殊计的目录,可以绕过联合文件系统(UFS),为一个或多个容器提供访问。

数据卷设计的目的,在于数据的永久化,它完全独立与容器的生存周期,因此,Docker不会在容器删除时删除其挂载的数据卷,也不会存在类似的垃圾收集机制,对容器引用的数据卷进行处理。

docker数据卷是独立于容器,存在于宿主机Host里。数据卷可以是目录,也可以是文件。数据卷可以实现多个容器的数据共享和交换。

数据卷(DataVolume)的特点

  • 数据卷在容器启动时初始化,如果容器使用的铺像在挂载点包含了数据,这些
    数据会拷贝到新初始化的数据卷中。
  • 数据卷可以在容器之间共享和重用
  • 可以对数据卷里的内容直接进行修改
  • 数据卷的变化不会影响像的更新
  • 卷会一直存在,即使挂载数据卷的容器已经被删除

为容器添加数据卷

sudo docker run -v ~/containerdata:/data -it ubuntu/bin/bash

为数据卷添加访问权限

$dockerrun -v ~/datavolume:/data:ro -it ubuntu/bin/bash只读

使用Dockerfile构建包含数据卷的镜像

DockerfiIe指令:VOLUME["/data"]

创建的目录不能映射已存在的本地文件目录中,运行同样镜像所建的数据卷也是不同的。本地目录由docker自动创建。

docker 的数据卷容器

命名的容器挂载数据卷,其他容器通过挂载这个容器实现数据共享,挂载数据卷的容器,就叫做数据卷容器。

挂载数据卷容器的方法:
docker run --volumes-from [CONTAINERNAME]

简化inspect返回信息,只查看volume信息:
docker inspect --format="{{.volumes}}" CONTAINER-NAME

即使删除了数据卷容器,挂载这个数据卷容器的容器仍然可以访问数据卷挂载目录,即数据卷容器只是一个配置信息的传递

docker rm -v CONTAINER_NAME连同volume一起删除(依旧可以访问,实质是指向本地目录)

docker 数据卷的备份和还原

数据备份方法

docker run --volumes-from [container name] -v $(pwd):/backup ubuntu

tar cvf /backup/backup.tar [container data volume]

数据换原方法

docker run --volumes-from [container name] -v$(pwd):/backup ubuntu
tar xvf /backup/backup.tar [container data volume]

原文地址:https://www.cnblogs.com/boxker/p/10631429.html