docker $PWD路径_Docker 数据持久化
1 Docker 数据持久化简介
- Docker 持久化存储的原因
- Docker 持久化的两种方式(volume和volume container)
- Docker 持久化存储的运维
2 Docker 持久化存储的原因
Docker 持久化主要由于docker容器的union filesystem的机制导致, union filesystem 将docker 容器数据按照一层一层只读层的方式堆叠而成,然后在最上层增加一层读写层。当容器运行需要写入数据时,将下层的只读层copy出来,然后写入到最上层的读写层,这就是著名的copy-on-write,简称cow。但是union fs只是临时存储,如果容器关闭之后,所有的数据都会消失,这时就应该有个概念专门用于满足存储需要保存起来的数据。
3 持久化的两种方式(volume和volume container)
Docker 持久化数据包含两个方式,一个是直接在运行的容器中直接创建volume,另一个是创建一个存储内外部映射关系的路径,然后其它容器使用-volumes-from进行引用,这种情况主要用于多个容器共享一组数据的情况。
3.1 volume
可以直接创建一个匿名volume,如下:
docker run -d -P -name test-container
-v /webapp training/webapp pthon app.py
此时将创建一个将容器/webapp路径映射到外部某个随机路径(由docker运行时指定)的data volume,当运行中的容器向/webapp路径下写入文件时,将会持久化到“母机”的路径下,这个“母机”的路径将可以使用docker inspect test-container查出来,形如
/var/lib/docker/volumes/78f5a620e6ac9e7
17fc2ba5cb26391318316c5b1bb4cba39fb6a60
118f8a4f5b/_data
第二种创建方式为创建一个指定路径的volume,将“母机”路径指定到具体的路径,创建语句如下。
docker run -d -P -name test-container -v
/src/webapp:/opt/webapp training/webapp
python app.py
3.2 volume container
第二种创建持久化数据的方式为创建一个专门用于存储数据的容器,该容器管理持久化存储。其它容器对该容器进行引用,实现对于持久化数据的共享。
创建一个/mnt为持久化路径的数据卷容器
docker create -v /mnt
data_volume_container ubuntu
创建一个容器,引用该数据卷容器
docker run -t -i --volumes-from
data_volume_container ubuntu /bin/bash
此时,第二个容器如果写入到/mnt,实际上写入的是第一个容器的/mnt下,也就是第一个容器/mnt映射的“母机”的路径下。
4 持久化存储的日常维护
4.1 备份
docker run -rm -volumes-from data-container
-v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /data-store
该条语句主要是创建一个用后即废的容器(-rm选项表示容器exit即删),然后引用data-container的volume,然后创建一个data-volume,运行tar将/data-store打包后,放入到容器的/backup下。
4.2 恢复
1. docker run -v /data-store -name
data-container-2 ubuntu /bin/bash
2. docker run -rm -volumes-from
data-container-2 -v $(pwd):/backup
ubuntu bash -c "cd /data-store &&
tar -xvf /backup/backup.tar"
该语句的作用是创建一个具有匿名路径的容器,然后再创建一个用后即废的容器执行解压命令。
4.3 删除
删除容器时,同时删除volume
docker rm -v container-name
由于删除容器时如果不使用-v参数,往往容器会保留volume,此时如果这些volume没有任何引用的容器,就处于一个dangling的状态,下面的指令就用于删除这些卷。
1.docker volume ls -f dangling=true
2.docker volume rm <volume name>
docker $PWD路径_Docker 数据持久化相关推荐
- docker $PWD路径_Docker 技术系列之安装Redis单机版和集群版
欢迎关注刘哥讲技术.上一节我们讲到通过docker安装了多台的mysql,很简单,那么我们这一节,利用 Docker 在一台机器上部署多个 Redis 实例. 那么redis是什么呢?Redis 是一 ...
- docker $PWD路径_Docker安装Jenkins+Shell脚本自动化部署项目
本文同名博客老炮说Java:https://www.laopaojava.com/,每天更新Spring/SpringMvc/SpringBoot/实战项目等文章资料 Sentinel+Nacos 是 ...
- docker容器运行mysql持久化_docker容器实现数据持久化的两种方式及其区别
前言 这篇博文是我对docker实现数据持久化几种方式的特征进行一个总结. 在docker中,它的存储文件系统是在dockerhost上原有的xfs或ext4架设了一层文件系统:overlay2(将此 ...
- docker 保存 环境持久化_Docker深入浅出系列 | 容器数据持久化
Docker深入浅出系列 | 容器数据持久化 Docker已经上市很多年,不是什么新鲜事物了,很多企业或者开发同学以前也不多不少有所接触,但是有实操经验的人不多,本系列教程主要偏重实战,尽量讲干货,会 ...
- 关于数据持久化的一个简介
今天给大家介绍一个OC中的数据持久化,今天介绍其中的三种,plist存储,偏好设置存储及归档存储!下面分别给大家上代码,并在代码中进行详细注释! 一 plist存储(只能存储OC中这些如字典,数组等常 ...
- Docker 的数据持久化项目实战
文章目录 官网 概述 初探Mysql镜像容器的数据存储 镜像准备:拉取mysql镜像 docker pull mysql 启动Mysql镜像 登录Mysql镜像容器 登录mysql 容器数据存储路径查 ...
- @kubernetes(k8s)数据持久化Volume存储卷(emptyDir、hostPath、NFS、StorageClass)
文章目录 kubernetes(k8s)数据持久化Volume 一.数据持久化 1.Vlolume概述 2.数据卷的分类 3.常用的四种数据卷 4.Pod使用Volume步骤: 5. volume基本 ...
- Linux——K8s存储(数据持久化)
K8s存储 1.K8s存储主要分为? 临时存储.半持久化存储.持久化存储 2.emptyDir 一般来说emptydir的用途都是用来充当临时存储空间,例如一些不需要数据持久化的微服务,我们都可以用e ...
- 爬虫数据持久化存储——写入文件
这里写目录标题 爬虫数据持久化存储--写入文件 open方法 文件的读取及写入 爬虫数据持久化存储--csv文件 爬虫数据处理:操作数据库模块--pymysql pymysql介绍: pymysql安 ...
最新文章
- Windows下Git库的创建
- php中$_REQUEST、$_POST、$_GET的区别
- java级联添加_JavaWeb学习记录(十三)——商城购物之添加订单的数据库级联操作...
- 黑马程序员_Java面向对象_包
- 角点检测——发现图像的特征
- php 查看方法来源,总结查看当前的方法分享
- 基于注解进行bean的装配
- 使用Office Word 2010/2013 发布文章到博客园
- mysql alter 唯一键_MySQL列属性 之 唯一键
- Spring Cloud Alibaba 深度解密!
- 一个渣渣的随页面滚动改变定位的代码
- Angular.js示例应用程序
- Stm32 基于蓝牙的串口通信 详细篇
- Mac 配置maven
- GDK动态代理原理分析
- java打印输出羞漫画
- 逍遥模拟器使用指南(二、电脑浏览器直接和模拟器互传方法)
- 盘点:视频监控行业的潜在商机
- base64模块的b64encode函数
- lol手游服务器维护到什么时候,lol10.1版本维护到几点 lol维护公告最新2020
热门文章
- java中的继承(一)
- vue 父组件使用keep-alive和infinite-scroll导致在子组件触发父组件的infinite-scroll方法...
- chrome 浏览器的插件权限有多大?
- 学习笔记--Python多进程
- python 字符编码、格式化
- JS---Math.Random()*10--[0,10)随机变颜色
- MariaDB数据库介绍之一、备份(mysqldump、lvm2快照、xtrabackup)
- win8.1远程桌面连接2008显示正在加密远程连接
- AIX LV删除后,ORACLE数据库文件全部恢复成功
- 有没有能够很快上手的报表框架