温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何使用docker数据卷?

发布时间:2020-06-23 09:44:57 来源:网络 阅读:272 作者:yunweilu 栏目:系统运维

如何使用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]

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI