4、Docker容器数据卷的介绍和操作使用

在Docker中,要想实现数据的持久化(所谓Docker的数据持久化即数据不随着Container的结束而结束),需要将数据从宿主机挂载到容器中。
它的作用相当于生活中的活动硬盘,那么数据卷容器就相当于把多个活动硬盘再挂载到一个活动硬盘上,实现数据的传递依赖。

特点:

1:数据卷可以在容器之间共享或重用数据

2:数据卷中的更改可以直接生效

3:数据卷中的更改不会包含在镜像的更新中

4:数据卷的生命周期一直持续到没有容器使用它为止(只要有关联过的就会存在,即使父容器停止使用了关联依然存在)

在这里插入图片描述

1、直接命令添加

在这里插入图片描述

(1)docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名

在这里插入图片描述
若宿主机中无命令行输入的绝对路径目录,则自动创建目录,并使其两个目录之间产生关联,可以进行数据共享,可对文件进行读写操作。就算容器停止退出后,主机修改后的数据依然可以同步到容器内。
在这里插入图片描述
在这里插入图片描述
在宿主机上创建一个file1文件
在这里插入图片描述
查看到容器内的目录下也出现了file1文件
在这里插入图片描述

(2)docker run -it docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名

在这里插入图片描述
给容器增加了权限,宿主机在关联的目录下可进行读写操作,而容器只能关联目录下的文件,而不能进行写操作。

2、通过Dockerfile构建

在这里插入图片描述
在这里插入图片描述
创建文件夹并在其内部编写Dockerfile
在这里插入图片描述
上述命令意思:
在当前的centos的根目录下面新建两个卷——dataVolumeContainer1和dataVolumeContainer2,输入命令行echo来输出"finished,-------success1"和打开中断后自动启动bash。

类似于:

docker run -it -v /host1:/dataVolumeContainer1 -v /host2:/dataVolumeContainer2 centos /bin/bash

在这里插入图片描述
构建Dockerfile文件生成镜像,镜像名为zzyy/centos
在这里插入图片描述
在这里插入图片描述
镜像构建完成并产生了两个卷,构建成功!

docker inspect a40bfde5eda1

使用inspect查看容器内部详细信息
在这里插入图片描述
其中Mounts下记录的是容器中卷的信息,Source记录对应的关联到的宿主机的地址。
在这里插入图片描述
在宿主机上输入地址并cd打开,可看到在容器中卷下写的文件被共享。

在这里插入图片描述
Config下的Volumes里记录容器中卷所在的地址。

注:
若Docker挂在主机目录Docker访问出现cannot open directory.:Permission denied。
解决办法:在挂在目录后多加一个–privileged=true参数即可

例如

docker run -it /myDataVolume:/dataVolumeContainer1 --privileged=true centos

3、数据卷容器

命名的容器挂载数据卷,其他容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称为数据卷容器。

通俗的讲就是可以将多个容器中的卷关联起来,进行数据共享。

在这里插入图片描述

在这里插入图片描述
运行zzyy/centos容器并命名为dc-1,在dataVolumeContainer2下新建一个文件。

Options:contianer2 --volumes-from container1

容器2从容器1中继承卷
在这里插入图片描述
打开dataVolume2发现可看到在dc-1容器中编写的文件

在这里插入图片描述
再建立dc-3容器继承dc-1的卷,可发现容器继承正确。
在这里插入图片描述
将dc-1(父容器)删除后,发现dc-2中之前继承dc-1卷中的文件依然存在,dc-3同理。

参考视频:尚硅谷Docker数据卷

5、docker volume ls

在这里插入图片描述
查看所有容器卷

6、docker volume inspect

在这里插入图片描述
查看指定卷中的信息。

7、docker volume rm

在这里插入图片描述
删除指定卷中的信息。

docker volume rm $(docker volume ls -q)

上述命令为删除所有卷

也可以使用-f或–force选项强行删除正在使用中的容器。然后再删除卷:

docker container rm –f $(docker container ls -aq)

docker volume rm my-data

参考文章:Docker数据卷之进阶篇

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辰阳星宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值