百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>服务器> Docker数据存储之Volumes详解
分享文章到:

Docker数据存储之Volumes详解

发布时间:05/13 来源:未知 浏览: 关键词:

默许容器的数据的读写产生在容器的存储层,当容器被删除时其上的数据将会遗失。所以我们应当尽量保证容器存储层不产生写操纵,为了实现数据的耐久化存储我们需要选中一种方案来保留数据,目前有下列几种方式:

  • Volumes
  • Bind mounts
  • tmpfs mounts

下图展现了这三种技术:

Volumes

Volumes(数据卷)是一个可供一个或多个容器运用的位于宿主机上特别目录,它具有下列特性:

  • 数据卷可以在容器间同享和重用
  • 对数据卷的写入操纵,不会对镜像有任何影响
  • 数据卷默许会不断存在,即便容器被删除

运用数据卷的目的是耐久化容器中的数据,以在容器间同享或者防止数据遗失(写入容器存储层的数据会遗失)。

运用数据卷的步骤个别分为两步:

  1. 创建一个数据卷
  2. 运用-v或--mount参数将数据卷挂载容器指定目录中,这样所有该容器针对该指定目录的写操纵都会保留在宿主机上的Volume中。

Volume治理

创建一个Volume:

$ docker volume create my-vol

查看Volumes:

$ docker volume ls
local    my-vol
$ docker volume inspect my-vol
[
 {
  "Driver": "local",
  "Labels": {},
  "Mountpoint": "/var/lib/docker/volumes/my-vol/_data",
  "Name": "my-vol",
  "Options": {},
  "Scope": "local"
 }
]

我么可以看到创建的Volume my-vol保留在目录/var/lib/docker/volumes/下,今后所有针对该Volume的写数据都会保留中目录/var/lib/docker/volumes/my-vol/_data下。

删除一个Volume:

$ docker volume rm my-vol

或者删除所有未运用的Volumes:

docker volume prune

挂载数据卷到容器目录

创建了一个Volume之后,我们可以在运转容器时通过指定-v或--mount参数来运用该Volume:

运用--mount参数:

$ docker run -d \
 --name=nginxtest \
 --mount source=nginx-vol,destination=/usr/share/nginx/html \
 nginx:latest

source指定volume,destination指定容器内的文件或文件夹。

或者运用-v参数:

$ docker run -d \
 --name=nginxtest \
 -v nginx-vol:/usr/share/nginx/html \
 nginx:latest

挂载成功后,容器从/usr/share/nginx/html目录下读取或写入数据,现实上都是从宿主机的nginx-vol数据卷中读取或写入数据。因而Volumes或Bind mounts也可以看作是容器和宿主机同享文件的一种方式。

-v参数运用冒号分割source和destination,冒号前半局部是source,后半局部是destination。

要是你挂载一个还不存在的数据卷,Docker会主动创建它。(因而创建数据卷那一步非必需)

要是容器中的待挂载的目录不是一个空目录,那么该目录下的文件会被复制到数据卷中。(Bind mounts下,宿主机上的目录总会遮盖容器中的待挂载目录)

-v参数和--mount参数总的来说功能险些雷同,独一的区别是在运转一个service时只能够--mount参数来挂载数据卷。

运用只读数据卷

有些状况下,我们但愿某个数据卷对某个容器来说是只读的,可以通过增加readonly选项来实现:

$ docker run -d \
 --name=nginxtest \
 --mount source=nginx-vol,destination=/usr/share/nginx/html,readonly \
 nginx:latest

或者运用-v参数:

$ docker run -d \
 --name=nginxtest \
 -v nginx-vol:/usr/share/nginx/html:ro \
 nginx:latest

Volumes运用场景

请参考这篇文章:Docker数据存储总结

参考文章

https://docs.docker.com/storage/volumes/#share-data-among-machines

总结

以上就是这篇文章的全部内容了,但愿本文的内容对大家的学习或者工作拥有一定的参考学习价值,感谢大家对脚本之家的支撑。要是你想理解更多相干内容请查看下面相干链接

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有157人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板