如何使用docker数据卷?
admin
2023-02-27 04:01:56
0

如何使用docker数据卷?

开始之前

如果你有一些需要持续更新的数据并且希望持久化数据,或者需要在不同的容器之间共享数据,再者需要主机与容器之间共享数据,那么你可以使用数据卷来满足这些需求。

数据卷定义

数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:
数据卷可以在容器之间共享和重用。
对数据卷的修改会立马生效。
数据卷默认会一直存在,即使容器被删除。

使用数据卷

数据卷有两种创建方式一是创建容器时创建数据卷,二是先创建好数据卷,在创建容器时挂载这个数据卷,两种方式均可以。

  1. 创建一个数据卷
docker volume create demo-data
demo-data
  1. 创建容器使用-v(--volume)参数来挂载数据卷
docker run --name demo1 -d \
    -v demo-data:/var/www/html nginx:alpine
docker run --name demo2 -d \
    -v demo-data:/var/www/html nginx:alpine
  1. 列出数据卷
docker volume ls
DRIVER      VOLUME NAME
local       demo-data
  1. 查看数据卷详细信息
docker volume inspect demo-data
[
    {
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/demo-data/_data",
        "Name": "demo-data",
        "Options": {},
        "Scope": "local"
    }
]
  1. 删除数据卷
docker volume rm demo-data
Error response from daemon: remove demo-data: volume is in use - [#省略..]

注意: 由于有容器正在使用数据卷,提示无法删除数据卷。

测试数据卷
  1. 宿主机写入数据
hostname > /var/lib/docker/volumes/demo-data/_data/hosts.txt

注意: 这个目录对应创建的 demo-data 数据卷。

  1. 容器写入数据
docker exec -ti demo1 sh -c 'hostname >> /var/www/html/hosts.txt'
docker exec -ti demo2 sh -c 'hostname >> /var/www/html/hosts.txt'
  1. 读取数据
cat /var/lib/docker/volumes/demo-data/_data/hosts.txt 
node0
87c60cbe6147
a6bc3c00c790
  1. 删除容器数据卷仍然保留
docker stop demo1 
docker stop demo2 
docker rm demo1
docker rm demo2

数据卷仍然存在

docker volume ls
DRIVER      VOLUME NAME
local       demo-data

如果需要可以使用 rm 选项删除数据卷

docker volume rm demo-data

数据卷已不存在

docker volume inspect demo-data 
[]
Error: No such volume: demo-data
命令帮助

创建容器时挂载数据卷参数

docker run --help | grep '\-v,'
  -v, --volume list     Bind mount a volume

删除容器时一并删除数据卷参数(慎用)

 docker rm --help | grep '\-v'

  -v, --volumes   Remove the volumes associated with the container

数据卷管理命令

docker volume --help

Usage:  docker volume COMMAND

Manage volumes

Commands:
  create      Create a volume
  inspect     Display detailed information on one or more volumes
  ls          List volumes
  prune       Remove all unused local volumes
  rm          Remove one or more volumes
小结

最后来总结下文章中的知识点

  • 数据卷 是被设计用来持久化数据的,它的生命周期独立于容器,Docker 不会在
    容器被删除后自动删除数据卷 。
  • 如果需要在删除容器的同时移除数据卷。可以在删除容器
    的时候使用docker rm -v这个命令。

参考文章

doker&k8s Qun [703906133]

相关内容

热门资讯

这个“中国首次”,很有看点 刚刚,韩国釜山,第48届世界遗产大会传来好消息:“景德镇手工瓷业遗存”成功列入《世界遗产名录》!这是...
85岁剑桥教授,为何成了中国年... ·2026年6月,艾伦·麦克法兰在英国剑桥大学国王学院。(Muye.G/摄)(本文图片均由剑桥康河出...
西安造12英寸硅片月产销突破1... 12英寸电子级硅片是当前全球半导体产业链的紧缺关键材料。近日,记者从位于西安高新区的西安奕斯伟材料科...
把防人的墙筑太高,困住的可能是... 据新华社消息,近日OpenAI公司的两款大模型联合进行内部评估时失控,突破隔离测试环境,侵入了美国A...
三星Galaxy S27 Pr... IT之家 7 月 25 日消息,科技媒体 WinFuture 昨日(7 月 24 日)发布博文,分享...
郑丽文颁卢秀燕一等奖章,两人热... 中国国民党第22届第二次全代会25日上午登场,党主席郑丽文颁发实践一等奖章给即将卸任的党籍县市长,台...
AI、信息服务激活广东产业增长... 佛山市美的库卡智能制造科技园工业机器人产线车间。 掌握PCB钻针关键技术的广东鼎泰高科技术股份有限...
固态电池技术对汽车产业的影响有... 当前新能源汽车市场正处于快速变革期,消费者对于续航里程和安全性的要求日益严苛。传统液态锂离子电池在能...
台风“红霞”即将登陆,广东多地... 今年第12号台风“红霞”已于今天(25日)早晨由强热带风暴级加强为台风级。预计,该台风将于今天夜间至...
日本皇室恐上演养子夺嫡,麻生太... 澎湃新闻记者 陈沁涵日本政府7月24日正式公布修订后的《皇室典范》,核心在于确保足够的皇族人数。这是...