Docker存储


Docker 管理数据的方式:数据卷 和 数据卷容器。

数据卷是Docker主机文件系统中的目录或文件,能够直接被挂到容器的文件系统中

1、数据卷

1.1、数据卷的特点

1、数据卷是目录或文件,不是没有格式化的磁盘

2、容器可以读写数据卷中的数据

3、数据卷数据可以被永久的保存,即使使用它的容器已经销毁

1.2、操作
1.2.1、添加数据卷:

1、在执行docker run 命令时使用 -v 参数来添加数据卷

命令:

docker run -it -v /data centos bash

可以在Dockefile中,使用 VOLUME 指令来创建添加一个或多个数据卷。

2、-v 参数除了可以用于创建数据卷外,还可以用来将 Docker daemon 所在主机上的文件或文件夹挂载到容器中。

docker run -it  -v /home/lin/桌面/html:/data  --privileged=true  centos  bash

加上 --privileged=true 参数后,进入data目录就拥有读写权限。

这样会把本地的 (/home/lin/桌面/html 这是自己做时的目录) 文件夹挂在容器/data目录。

添加一个ro选项,来指定挂载时文件权限是只读的。

命令:

docker run -it  -v /home/lin/桌面/html:/data:ro --privileged=true  centos  bash

2、数据卷容器

数据卷容器是专门为其他容器提供数据卷的容器。它提供的卷可以是绑定装载的卷,也可以是Docker管理卷。

绑定装载就是把主机上已存在目录或文件挂载到容器中。

Docker管理卷与绑定装载的区别就是不需要指定绑定源,只需要指定绑定点就可以。

2.1、操作
2.1.1、创建一个带有名字的容器来共享数据。

命令:

docker run -it  -v/data  --name data_provider    centos

或者

docker create --name data_provider -v /data  centos

使用数据卷容器时,无须保证数据卷容器处于运行状态,所以用docker create命令即可。

2.1.2、查看数据卷容器

命令:

docker inspect data_provider

查看磁盘的占用情况。

命令:

df -hl
2.1.3、使用–volumes-from参数挂载/data卷。(可以把多个容器中的多个数据卷放到一起。)

命令:

docker run -it  --volumes-from  data_provider --name data_consume2  centos

注意:使用数据卷容器存储的数据不会轻易丢失,即便删除consume2容器,甚至是初始化数据卷容器,该数据卷也不会被删除。只有在删除最后一个使用该数据卷的容器时,使用docker rm –v命令,才会删除该数据卷。

2.1.4、列出所有数据卷。

命令:

docker volume  ls
2.1.5、删除所有使用共享数据卷的容器。

首先用 docker ps 查询容器,然后用 docker rm -f 容器id 删容器。

2.1.6、列出所有不被引用的数据卷。

命令:

docker volume  ls  -f dangling=true
2.1.7、使用docker volume rm命令,删除数据卷容器中共享的数据卷。

命令:

docker volume rm 数据卷volume name

3、备份数据

使用数据卷的方式管理容器数据时,可以很方便地对其中的数据进行备份、转储和迁移。

使用如下命令将数据卷中的数据打包,并将打包后的文件拷贝到主机当前目录中,我们使用–volumes-from 参数来创建一个挂载了要备份数据卷的容器。

命令:

docker run --volumes-from data_provider -v $(pwd):/backup --name backup_worker1 --privileged=true centos tar -cvPf /backup/backup.tar /data

前面我们创建并登录了一个新容器,挂载了data_provider容器中的数据卷,并把本地的一个目录挂载了 /backup下,最后再传一条tar 命令来备份data 卷到/backup下,当命令执行完成后容器就会停止运行, 并保留/data 的备份,备份文件会出现在主机的当前目录(虚拟机当前目录)。

4、恢复数据

1、首先创建一个容器。

命令:

docker run -it -v /restore --name data_restore centos

2、然后再创建一个新的容器,这个容器挂载data_restore容器,并将压缩文件解压到容器卷中。

命令:

docker run -it --volumes-from  data_restore  -v $(pwd):/restore --privileged=true centos
tar -xvPf backup.tar  /data

如果删除了挂载数据卷的容器,数据卷不会被自动删除,如果需要删除一个数据卷,必须在删除最后一个挂载该数据卷的容器时,显示的使用 docker rm -v 命令,来同时删除关联的容器。

命令:

docker rm -v 数据卷id
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值