黑松山资源网 Design By www.paidiu.com

默认容器的数据的读写发生在容器的存储层,当容器被删除时其上的数据将会丢失。所以我们应该尽量保证容器存储层不发生写操作,为了实现数据的持久化存储我们需要选择一种方案来保存数据,当前有以下几种方式:

  • Volumes
  • Bind mounts
  • tmpfs mounts

下图展示了这三种技术:

Docker数据存储之Volumes详解

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接

黑松山资源网 Design By www.paidiu.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
黑松山资源网 Design By www.paidiu.com

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。