当前位置: 首页 > news >正文

Docker之 数据持久化

容器中数据持久化主要有两种方式:

  1. 数据卷(Data Volumes)
  2. 数据卷容器(Data Volumes Dontainers)

数据卷

数据卷是一个可供一个或多个容器使用的特殊目录,可以绕过UFS(Unix File System)。

  1. 数据卷可以在容器之间共享和重用
  2. 对数据卷的修改会立马生效
  3. 对数据卷的更新,不会影响镜像
  4. 数据卷默认会一直存在,即使容器被删除
  5. 一个容器可以挂载多个数据卷

注意:数据卷的使用,类似于 Linux 下对目录或文件进行 mount。

创建数据卷

示例:

?
1
docker run --name nginx-data - v /mydir nginx

执行如下命令即可查看容器构造的详情:

?
1
docker inspect 容器ID

由测试可知:

  1. Docker会自动生成一个目录作为挂载的目录。
  2. 即使容器被删除,宿主机中的目录也不会被删除。

删除数据卷

数据卷是被设计来持久化数据的,因此,删除容器并不会删除数据卷。如果想要在删除容器时同时删除数据卷,可使用如下命令:

?
1
docker rm - v 容器ID

这样既可在删除容器的同时也将数据卷删除。

挂载宿主机目录作为数据卷

?
1
docker run --name nginx-data2 - v /host-dir : /container-dir nginx

这样既可将宿主机的/host-dir路径加载到容器的/container-dir中。

需要注意的是:

宿主机路径尽量设置绝对路径——如果使用相对路径会怎样?

  1. 测试给答案

如果宿主机路径不存在,Docker会自动创建

TIPS

Dockerfile暂时不支持这种形式。

挂载宿主机文件作为数据卷

?
1
docker run --name nginx-data3 - v /文件路径: /container 路径 nginx

指定权限

默认情况下,挂载的权限是读写权限。也可使用:ro 参数指定只读权限。

示例:

?
1
docker run --name nginx-data4 - v /host-dir : /container-dir :ro nginx

这样,在容器中就只能读取/container-dir中的文件,而不能修改了。

数据卷容器

如果有数据需要在多个容器之间共享,此时可考虑使用数据卷容器。

创建数据卷容器:

?
1
docker run --name nginx-volume - v /data nginx

在其他容器中使用-volumes-from 来挂载nginx-volume容器中的数据卷。

?
1
2
docker run --name v1 --volumes-from nginx-volume nginx
docker run --name v2 --volumes-from nginx-volume nginx

这样:

v1、v2两个容器即可共享nginx-volume这个容器中的文件。

即使nginx-volume停止,也不会有任何影响。

转载于:https://www.cnblogs.com/andy6/p/10106631.html

相关文章:

  • webpack4 配置 vue项目
  • 开发函数计算的正确姿势 —— 排查超时问题
  • 同是容器管理系统,Kubernetes为什么那么火?
  • Beta冲刺随笔集
  • 计算机系统要素-写一个简单的编译器和操作系统
  • SQLite教程
  • webpack入门学习手记(二)
  • 无人驾驶——2.定位之卡尔曼滤波
  • 真相触目惊心!个人信息泄露报告 86.5%的人曾接到推销电话
  • [Vue CLI 3] Uglify 相关的应用和设计
  • Android Fragment碎片
  • docker 非root用户修改mount到容器的文件出现“Operation not permitted
  • Python入门
  • SSL虚拟主机
  • 【.Net】 C#访问修饰符
  • [nginx文档翻译系列] 控制nginx
  • Apache Pulsar 2.1 重磅发布
  • Brief introduction of how to 'Call, Apply and Bind'
  • C# 免费离线人脸识别 2.0 Demo
  • HTTP请求重发
  • Leetcode 27 Remove Element
  • Linux快速复制或删除大量小文件
  • MySQL数据库运维之数据恢复
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • REST架构的思考
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 基于HAProxy的高性能缓存服务器nuster
  • 前端之React实战:创建跨平台的项目架构
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 怎么把视频里的音乐提取出来
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ###C语言程序设计-----C语言学习(6)#
  • ${factoryList }后面有空格不影响
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (力扣)循环队列的实现与详解(C语言)
  • (十)c52学习之旅-定时器实验
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (一) storm的集群安装与配置
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (转载)Google Chrome调试JS
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .Net 代码性能 - (1)
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .NET使用存储过程实现对数据库的增删改查
  • /3GB和/USERVA开关
  • @AliasFor注解
  • @Autowired注解的实现原理
  • @Documented注解的作用
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945
  • [100天算法】-二叉树剪枝(day 48)
  • [AIGC] Redis基础命令集详细介绍
  • [ffmpeg] x264 配置参数解析
  • [Flex] PopUpButton系列 —— 控制弹出菜单的透明度、可用、可选择状态