Docker核心技术之数据管理
一、Docker 数据卷简介
为什么用数据卷
宿主机无法直接访问容器中的文件
容器中的文件没有持久化,导致容器删除后,文件数据也随之消失
容器之间也无法直接访问互相的文件
为解决这些问题,docker加入了数据卷(volumes)机制,能很好解决上面问题,以实现:
容器与主机之间、容器与容器之间共享文件
容器中数据的持久化
将容器中的数据备份、迁移、恢复等
数据卷的特点
数据卷存在于宿主机的文件系统中,独立于容器,和容器的生命周期是分离的。
数据卷可以目录也可以是文件,容器可以利用数据卷与宿主机进行数据共享,实现了容器间的数据共享和交换。
容器启动初始化时,如果容器使用的镜像包含了数据,这些数据会拷贝到数据卷中。
容器对数据卷的修改是实时进行的。
数据卷的变化不会影响镜像的更新。数据卷是独立于联合文件系统,镜像是基于联合文件系统。镜像与数据卷之间不会有相互影响。
二、Docker 数据卷管理
Docker挂载容器数据卷的三种方式
bind mounts:将宿主机上的一个文件或目录被挂载到容器上。
volumes:由Docker创建和管理。使用docker volume命令管理
tmpfs mounts:tmpfs 是一种基于内存的临时文件系统。tmpfs mounts 数据不会存储在磁盘上。
bind mounts方式挂载数据卷
利用docker run/create的参数为容器挂载数据卷
用法: 方式一: -v, --volume参数
-v 宿主机文件或文件夹路径:容器中的文件或者文件夹路径
方式二:--mount参数
--mount type=bind, src=宿主机文件或文件夹路径, dst=容器中的文件或者文件夹路径
注意:src指定的文件和路径必须提前创建或存在
命令演示:
volumes方式挂载数据卷
利用docker run/create为容器挂载数据卷
用法: 方式一: -v, --volume参数
-v VOLUME-NAME:容器中的文件或者文件夹路径
方式二:--mount 参数
--mount type=volume, src=VOLUME-NAME, dst=容器中的文件或者文件夹路径
volume对象管理:
docker volume 命令管理volume数据卷对象
docker volume create 创建数据卷对象
docker volume inspect 查看数据卷详细信息
docker volume ls 查看已创建的数据卷对象
docker volume prune 删除未被使用的数据卷对象
docker volume rm 删除一个或多个数据卷对象
tmpfs mount方式挂载数据卷
利用docker run/create为容器挂载数据卷
用法: --mount type=tmpfs, dst=PATH
共享其他容器的数据卷-数据卷容器
利用docker run/create 的--volumes-from参数指定数据卷容器
用法: docker run/create --volumes-from CONTAINER
三、Docker 数据卷注意事项
数据卷使用注意
Docker的数据卷更多会是使用volumes方式来进行使用。使用时需注意:
如果挂载一个空的数据卷到容器中的一个非空目录中,那么这个目录下的文件会被复制到数据卷中。
如果挂载一个非空的数据卷到容器中的一个目录中,那么容器中的目录中会显示数据卷中的数据。
如果原来容器中的目录中有数据,那么这些原始数据会被隐藏掉。
这两个规则都非常重要,灵活利用第一个规则可以帮助我们初始化数据卷中的内容。掌握第二个规则可以保证挂载数据卷后的数据总是你期望的结果。
四、总结
重点掌握
数据卷特征和简介
mount方式绑定数据卷
数据卷挂载的三种形式
数据卷使用的注意事项
Docker核心技术之数据管理相关推荐
- Docker核心技术
整理自<Docker技术入门与实践>(杨保华 戴王剑 曹亚仑) - Docker核心技术一文. Docker是一种基于Linux Container(LXC)技术实现的容器虚拟化技术,现又 ...
- Docker核心技术之联合文件系统
本文来说下docker核心技术之联合文件系统 文章目录 概述 概述
- 后端技术杂谈10:Docker 核心技术与实现原理
Docker 核心技术与实现原理 30 NOV 2017 docker namespaces cgroups unionfs aufs server Namespaces 进程 网络 挂载 ...
- 【云原生进阶之容器】第一章Docker核心技术1.6节——UnionFS
<重识云原生系列>专题各章首节索引: 第一章--不谋全局不足以谋一域 第二章计算第1节--计算虚拟化技术总述 第三章云存储第1节--分布式云存储总述 第四章云网络第一节--云网络技术发展简 ...
- 【重识云原生】第六章容器6.1.8节——Docker核心技术UnionFS
<重识云原生系列>专题索引: 第一章--不谋全局不足以谋一域 第二章计算第1节--计算虚拟化技术总述 第二章计算第2节--主流虚拟化技术之VMare ESXi 第二章计算第3节--主流虚拟 ...
- Docker核心技术学习笔记
Docker核心技术 文章目录 Docker核心技术 一 .Docker简介 二.Docker安装 前提说明 Docker 的基本组成 安装 centos 7 安装docker 启动hello-wor ...
- 深入剖析docker核心技术(namespace、cgroups、union fs、网络)
深入剖析docker核心技术 前言 docker概述 为什么要用docker Namespace 概述 实现 操作方法 隔离性 常用操作 Cgroups 概述 实现 配额和度量 CPU 子系统 Lin ...
- 深入浅出Docker(一):Docker核心技术预览
[编者按]Docker是PaaS供应商dotCloud开源的一个基于LXC 的高级容器引擎,源代码托管在 GitHub 上, 基于Go语言开发并遵从Apache 2.0协议开源.Docker提供了一种 ...
- Docker(一):Docker核心技术预览
开始学习docker了,想写一篇docker技术介绍的纯理论文章,发现以下网站的文档写的特别好,就直接引用了,文章转载自: http://www.infoq.com/cn/DockerDeep htt ...
最新文章
- html控件无法使用的属性值,用 Enabled 和 disabled 属性禁用 HTML 控件后,取值结果...
- jmeter启动警告项解决方案
- linux上验证cudnn是否安装成功_非root用户安装cuda与cudnn
- ImportError: No module named babel.dates
- Reactor构架模式--转载
- kylin KV+cube方案分析
- MySQL带ALL关键字的子查询
- 傅德良:选择视频编码器的误区
- 《scikit-learn》随机森林之回归
- 基于RGB图像的草莓叶片白粉病检测深度学习方法
- mysql插入时unique字段重复插入失败
- IO summery
- 从零开始带你称为MySQL实战优化高手(儒猿技术窝)
- 服务器是什么?跟电脑有啥区别?
- 社区服务开启“云”智慧社区时代,CDN高防能否成为服务器的源动力呢?
- 7-1 哈夫曼编码(实验) 最全代码解析
- libpython3.7m so静态库_Python3.7:加载共享库时出错:libpython3.7m.so.1.0
- 宅急送项目第六天笔记!
- 制作食物官网及网页展示的过程
- 对于英语小白,运行Pycharm后要做的第一件事,下载一个官方插件,汉化Pycharm