Docker 存储之数据卷(Volume)

Volume提供了独立于容器之外的持久化存储,以及容器与容器之间的共享数据。

  • 创建数据卷

在docker run 命令中加-v选项可以创建数据卷。下面运行一个ngnix容器,通过-v挂载一个卷。
这里写图片描述
当我们创建一个容器的时候,docker会自动对它进行命名。也可以使用--name标识来命名容器。

容器运行起来后可以通过docker inspect命令来查看容器的信息,这里我们主要关心下面这块内容:
这里写图片描述
其中Source的值就是挂载到本地的目录地址。Docker 将本地一个 _data 目录 mount 为容器内的 /usr/share/nginx/html 目录了。我们可以进入此目录查看一下,发现有两个nginx的缺省文件。
这里写图片描述
修改index.html文件的内容:
这里写图片描述
使用下面的命令进入容器bash

docker exec -it container-id或者container-name /bin/bash

这里-it表示以交互的方式运行
这里写图片描述
可以发现在容器中查看index.html的内容已经被修改。

注意,在 容器被删除后,/var/lib/docker/volumes/f143b7f379fb6d012a08656fc950bf6df4bf5a5b90c72f310644aa997620122b/_data 目录及其中的内容都还会保留下来,但是,新启动的容器无法再使用这个目录,也就是说,已有的数据不能自动地被重复使用了。

  • 挂载本地文件作为数据卷

docker目录下创建一个html目录,在html目录创建index.html文件:
这里写图片描述
使用下面的命令将本地目录挂载到容器上。
这里写图片描述
修改html目录下的index.html文件,就可以反应到容器当中。

这是方式和第一种方式没有本质区别,在第一种方式中没有指定本地挂载的目录,而是由docker自己指定,对于当前这种方式是由我们自己指定一个本地目录来挂载。重新启动容器时,可以再次使用同样的方式来将 html 目录挂载到新的容器内,这样就可以实现数据持久化的目标。

  • 容器数据卷

在docker目录下创建一个data目录,然后使用下面的命令创建一个新的容器
这里写图片描述
docker create 命令为指定的镜像(image)添加了一个可读写层,构成了一个新的容器。注意,这个容器并没有运行。

使用下面的docker命令将上面新的容器挂载另一个容器当中去。这个容器可以被多个容器挂载,做到数据共享。
这里写图片描述

其中-it表示以交户的方式运行
这里写图片描述

进入mydata目录创建一个test.txt文件,然后退出容器,查看本地的data目录,发现里面也多了一个test.txt文件。
这里写图片描述

最后,可以使用 docker rm -v 命令在删除容器时删除该容器的卷。例如:docker rm -vf nginx-fun,这样可以在删除nginx-fun容器同时删除它的卷。docker volume ls命令查看卷。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值