你是不是也经常在使用Docker的时候,遇到“数据持久化”相关的困惑?容器删了,数据也跟着没了?今天就带你深入了解Docker的Volume机制,搞懂什么是Volume、怎么使用、存储在哪,以及如何实现多个容器共享存储!
一、什么是DockerVolume?
Docker的Volume(卷)是官方推荐的数据持久化方案,用来将容器中的数据独立存储在宿主机上。与容器生命周期解耦,删除容器不会影响数据,非常适合用于数据库、日志等场景。
简单理解就是:容器内的数据->Volume->宿主机目录。
二、Volume的使用场景
容器内服务需要持久化数据,比如MySQL、Redis、PostgreSQL
♻️多个容器之间需要共享数据
防止重要数据在容器销毁时丢失
容器频繁更新、迁移,但数据需要保留
三、Volume怎么使用?
1.创建Volume
dockervolumecreatemydata
查看:
dockervolumels
2.使用Volume运行容器
dockerrun-d\--namemysql\-vmydata:/var/lib/mysql\mysql:5.7
这条命令把宿主机上的mydata卷挂载到了容器中的/var/lib/mysql,MySQL的数据就存储在这个卷里。
3.查看卷挂载路径
dockervolumeinspectmydata
输出中Mountpoint字段会告诉你这个卷实际挂载到了宿主机的哪个路径,例如:
"Mountpoint":"/var/lib/docker/volumes/mydata/_data"
也就是说,你的数据其实是存在宿主机这个目录下的。
四、DockerVolume存储在哪?
默认情况下,Docker会将Volume存储在:
/var/lib/docker/volumes/卷名/_data/
你也可以用第三方存储驱动(如NFS、GlusterFS、Ceph等)把Volume存储到远程服务器或分布式存储系统。
五、如何共享Volume?
方式1:多个容器挂载同一个Volume
dockerrun-d--namecontainer1-vmydata:/app/databusyboxsleep3600dockerrun-d--namecontainer2-vmydata:/app/databusyboxsleep3600
两个容器就可以共享/app/data目录下的内容了。
方式2:使用--volumes-from继承挂载
dockerrun-d--namecontainer1-v/databusyboxdockerrun-d--namecontainer2--volumes-fromcontainer1busybox
适合某些场景下的依赖继承,比如日志采集、配置共享等。
六、Volume的清理
删除未使用的卷
dockervolumeprune
删除指定卷
dockervolumermmydata
⚠️注意:如果卷还在使用中,删除会失败。
七、补充:VolumevsBindMount
总结一下
DockerVolume是实现容器数据持久化和共享的关键工具。掌握Volume,可以让你:
保证数据不随容器销毁而丢失
实现多个容器的数据共享
更安全、便捷地管理容器生命周期中的数据
别再让数据随风而去了,赶紧用Volume把数据稳稳托住吧!
美国财政部本周早些时候也公布了新的反俄制裁方案,涉及俄罗斯以及中国等其他国家的300多家公司、银行和数十名个人。中国外交部发言人林剑13日表示,美国在全球范围内滥施单边制裁贻害无穷,严重损害他国主权安全,造成人道惨剧,破坏产供链稳定。乌克兰危机升级后,美方制裁更是变本加厉。而这种乱舞制裁大棒的做法,不仅无助于问题的解决,反而成为世界一个主要的风险源头。