Docker 容器数据卷

打工人 · 2021年11月07日 · 最后由 乾行 回复于 2021年11月07日 · 2853 次阅读

数据卷概念

容器数据卷是为了实现容器的持久化和同步操作,它完全独立于容器的生命周期,容器间也可以实现数据共享的 (多个容器可以共享一个地方的数据),因此,Docker 不会在容器删除时删除其挂载的数据卷,也不会存在类似的垃圾回收机制,对容器引用的数据卷进行处理

容器数据卷技术保障容器被删除后,数据不丢失

数据卷特性

  1. 数据卷可以在容器之间共享
  2. 宿主机对容器数据卷双向绑定
  3. 宿主机可以对数据卷里的内容直接修改
  4. 卷会一直存在,及时挂载数据卷的容器已经被删除
  5. 数据卷支持多重挂载

数据卷应用场景

  • 频繁进入容器比较麻烦,可以将经常使用的容器内配置文件进行挂载
  • 容器中的数据通过数据卷可以持久化到本地,作为一种备份

通过命令行挂载数据卷

  • 匿名挂载 基本语法:-v 容器内路径
docker run -d -p 8080:8080 --name tomcat -v /usr/local/tomcat/webapps tomcat

参数解析:
-d 后台启动
-p 端口映射
--name 容器名称
-v 数据卷挂载,/usr/local/tomcat/webapps 为容器内路径

挂载后通过 docker volume ls 可查看所有的数据卷
通过 docker inspect 容器 id 也可查看容器 mount 的数据卷
注:volume name 是随机生成的字符串

  • 具名挂载 基本语法: -v 卷名:容器内路径
docker run -d -p 8080:8080 --name tomcat -v volumeName:/usr/local/tomcat/webapps tomcat

挂载后通过 docker volume ls 可看到 volumeName 名称的数据卷

  • 本地挂载(指定路径挂载) 基本语法:-v 宿主机路径:容器内路径
docker run -d -p 8080:8080 --name tomcat -v /root/webapps:/usr/local/tomcat/webapps tomcat

支持多重挂载,如/root/webapps 已挂载到 tomcat 容器,同样 它也可以继续挂载到别的容器

docker run -d -p 8081:8080 --name tomcat1 -v /root/webapps:/usr/local/tomcat/webapps tomcat

挂载模式:
ro:readonly,容器中被挂载的目录在容器中只能进行读
rw:readwrite(默认),容器中被挂载的目录在容器中可读可写

docker run -d -p 8080:8080 --name tomcat -v /root/webapps:/usr/local/tomcat/webapps:ro tomcat

end~~~

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 1 条回复 时间 点赞

优秀,周末学习

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册