docker es持久化_使用docker数据卷对容器数据持久化

volume是用于对Docker容器生成和使用的数据持久化的首选机制。如果您的容器生成非持久状态数据,请考虑使用 tmpfs挂载以避免将数据永久存储在任何地方,并通过避免写入容器的可写层来提高容器的性能。

aada19f5530536dbdcfe4e767d70ebb9.png

默认容器的数据存储

在这里我们在容器中创建一些模拟的数据,然后模式容器停止或删除后数据是否丢失。

## 创建数据​[root@myserver ~]# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMESa0316d74ef5d        bulletinboard:1.0   "docker-entrypoint.s…"   55 minutes ago      Up 16 minutes       0.0.0.0:8000->8080/tcp   bb[root@myserver ~]# docker exec -it bb bashroot@a0316d74ef5d:/usr/src/app# lsDockerfile  app.js   fonts   node_modules     package.json  server.jsLICENSE     backend  index.html  package-lock.json  readme.md   site.cssroot@a0316d74ef5d:/usr/src/app# cdroot@a0316d74ef5d:~# lsroot@a0316d74ef5d:~# mkdir dataroot@a0316d74ef5d:~# lsdataroot@a0316d74ef5d:~# cd data/root@a0316d74ef5d:~/data# lsroot@a0316d74ef5d:~/data# echo 12323 > tst.txtroot@a0316d74ef5d:~/data# cat tst.txt12323root@a0316d74ef5d:~/data# pwd/root/dataroot@a0316d74ef5d:~/data#​​## 停止并重新启动容器数据还是存在的## 删除容器(加入对镜像做了修改)数据丢失 ​[root@myserver ~]# docker run -itd --name bb bulletinboard:1.098e14379e2109c9230d1d265ac586ce3bba433efb7d2ef544ef93cb58c859f0a[root@myserver ~]# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES98e14379e210        bulletinboard:1.0   "docker-entrypoint.s…"   3 seconds ago       Up 2 seconds        8080/tcp            bb[root@myserver ~]# docker exec -it bb bashroot@98e14379e210:/usr/src/app# cdroot@98e14379e210:~# lsroot@98e14379e210:~#

VOLUME使用方法

我们来通过docker volume命令管理volume。 创建volume到将volume挂载到容器中。

## 创建一个volume[root@myserver ~]# docker volume create --name myvolumemyvolume[root@myserver ~]# docker volume lsDRIVER              VOLUME NAMElocal               myvolume[root@myserver ~]# docker volume inspect myvolume[    {        "CreatedAt": "2020-07-11T21:52:26-04:00",        "Driver": "local",        "Labels": {},        "Mountpoint": "/var/lib/docker/volumes/myvolume/_data",        "Name": "myvolume",        "Options": {},        "Scope": "local"    }]​## 在挂载点创建数据[root@myserver ~]# cd /var/lib/docker/volumes/myvolume/_data[root@myserver _data]# ls[root@myserver _data]# echo 11111 > a.txt[root@myserver _data]# lsa.txt[root@myserver _data]# cd -/root​​​## 将卷挂载给容器[root@myserver ~]# docker run -itd --name bb  -v myvolume:/data:rw bulletinboard:1.01ed40ff338280def96b4c395d33977219b3e3a47e10444cf23d16f4bb83e0e27[root@myserver ~]# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES1ed40ff33828        bulletinboard:1.0   "docker-entrypoint.s…"   4 seconds ago       Up 3 seconds        8080/tcp            bb[root@myserver ~]# docker exec -it bb bashroot@1ed40ff33828:/usr/src/app# cdroot@1ed40ff33828:~# lsroot@1ed40ff33828:~# cd /root@1ed40ff33828:/# lsbin   data  etc   lib  media  opt   root  sbin  sys  usrboot  dev   home  lib64  mnt  proc  run   srv   tmp  varroot@1ed40ff33828:/# cd data/root@1ed40ff33828:/data# lsa.txtroot@1ed40ff33828:/data# cat a.txt11111root@1ed40ff33828:/data# echo 12323423 >> a.txtroot@1ed40ff33828:/data# cat a.txt1111112323423root@1ed40ff33828:/data# cdroot@1ed40ff33828:~# mkdir /data/testroot@1ed40ff33828:~# echo 12312312 > /data/test/a.txtroot@1ed40ff33828:~# exitexit​​### 删除容器后重新启动容器发现数据还在。[root@myserver ~]# docker rm --force bbbb[root@myserver ~]# docker run -itd --name bb  -v myvolume:/data:rw bulletinboard:1.017f0178d062e8fe041aae55229e1f522237ca5753e01515a451c68d9c2aaf51b[root@myserver ~]# docker exec -it bb bashroot@17f0178d062e:/usr/src/app# cd /data/root@17f0178d062e:/data# lsa.txt  testroot@17f0178d062e:/data# ls test/a.txt

容器挂载VOLUME的另外一种方式

我们也可以在启动容器的时候通过-v参数指定volume,如果volume不存在则会自动创建。

[root@myserver ~]# docker run -itd --name cc  -v /tmp/test:/data:rw bulletinboard:1.0c0fd785c403040c0f3fa0840a738359da5f54aa28f4201cdada0e8de19f8f88a[root@myserver ~]# docker volume lsDRIVER              VOLUME NAMElocal               myvolume[root@myserver ~]# cd /tmp/test/[root@myserver test]# ls[root@myserver test]# echo 111 >a.txt[root@myserver test]#[root@myserver test]#[root@myserver test]# lsa.txt[root@myserver test]#[root@myserver test]#[root@myserver test]# cd[root@myserver ~]# docker exec -it cc bashroot@c0fd785c4030:/usr/src/app# cd /data/root@c0fd785c4030:/data# lsa.txtroot@c0fd785c4030:/data#

DOCKER 存储卷

volume 创建后默认挂载数据目录:/var/lib/docker/volumes/volumeID/_data

[root@myserver ~]# docker volume inspect myvolume[    {        "CreatedAt": "2020-07-11T21:59:36-04:00",        "Driver": "local",        "Labels": {},        "Mountpoint": "/var/lib/docker/volumes/myvolume/_data",        "Name": "myvolume",        "Options": {},        "Scope": "local"    }]

共享VOLUME

--volumes-from 容器名称,共享容器的volume

方式一:挂载相同的volume

[root@myserver volumes]# docker run -itd --name server01 -v vtest:/data webserver:v1007d2a504410e435c260d6271d970056fc629880a6654b6777bec206008c4006​​docker run -itd --name server02  -v vtest:/data webserver:v1​​##创建数据[root@myserver volumes]# docker volume inspect vtest[    {        "CreatedAt": "2020-07-13T07:59:36-04:00",        "Driver": "local",        "Labels": null,        "Mountpoint": "/var/lib/docker/volumes/vtest/_data",        "Name": "vtest",        "Options": null,        "Scope": "local"    }][root@myserver volumes]# echo 123>/var/lib/docker/volumes/vtest/_data/a.txt

方式二: 使用--volumes-from

docker run -itd --name server02  --volumes-from server01 webserver:v1​# 将server01容器所挂载的卷同步给server02

#Docker# #容器云# #DevOps#

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306010.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

求职信计算机工程师英语作文,开发工程师英文求职信范文

开发工程师英文求职信范文respected leaders:hello:first salute you sincere thanks, thank you for taking the time to consult the of my application letter!i am aptech a student, now already graduated from junior year. major in.net direction, and ismitted to be…

微信适配国产操作系统:原生支持 Linux

喜欢就关注我们吧!据 ZOL 报道,统信软件官方近日宣布上线适配统信 UOS 的微信桌面客户端,并称该微信版本为原生支持 Linux 的版本,同时支持龙芯、鲲鹏、麒麟等国产 CPU。据悉,统信 UOS 版的微信桌面客户端由腾讯公司研…

ML.NET生成器带来了许多错误修复和增强功能以及新功能

ML.NET是一个开源的跨平台机器学习框架,适合 .NET 开发人员。它允许将机器学习集成到 .NET 应用中,而无需离开 .NET 生态系统,甚至拥有 ML 或数据科学背景。ML.NET工具(Visual Studio 中的 UI 模型生成器和跨平台 ML.NET CLI&…

Flash 生命终止,HTML5能否完美替代?

Adobe 对 Flash Player 的支持计划在今天,也就是 2020 年 12 月 31 日终止。Windows 计算机上最新版本的 Flash Player 已经开始弹出生命周期终止提示窗口。提示中指出,为了保护用户系统,Adobe 将在 2021 年 1 月 12 日开始禁止 Flash 内容在…

typora公式zuo对齐_Markdown编辑神器-Typora

Markdown For Typora Overview Markdown is created by Daring Fireball, the original guideline is here. Its syntax, however, varies between different parsers or editors. Typora is using [GitHub Flavored Markdown][GFM]. 注:Markdown语法与知乎不能完全兼容,显示…

使用 ML.NET 识别乐高颜色块

每一个乐高迷都拥有很多的颜色块,需要进行排序和按类型分拣,按照《Organizing your LEGO Bricks》或许有所帮助,但这不是一个简单的任务,因为有很多颜色块有非常微妙的差异。如果换作一个典型的程序员可以做什么来解决这个问题呢&…

ccs加载out文件_类加载流程、类加载机制及自定义类加载器详解

原文:juejin.im/post/5cffa528e51d4556da53d091一、引言当程序使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、链接、初始化三个步骤对该类进行类加载。二、类的加载、链接、初始化1、加载类加载指的是将类的class文件读入内存&a…

unity中单位是米还是厘米_【一步数学】小学数学单位换算公式大全及专项训练...

重量单位换算1吨1000千克 1吨1000 000克吨:吨是重量单位,公制一吨等于1000公斤:计算船只容积的单位,一吨等于2.83立方米(合100立方英尺)。1千克1000克 500克1斤千克:克,(符号kg或㎏)…

二分法查找是基于有序_201,查找顺序查找

查找算法中顺序查找算是最简单的了,无论是有序的还是无序的都可以,也不需要排序,只需要一个个对比即可,但其实效率很低。我们来看下代码1public static int search1(int[] a, int key) {2 for (int i 0, length a.length; i …

河南大学计算机组成原理,河南大学计算机组成原理考点

河南大学计算机组成原理考点 (34页)本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!11.90 积分第1章 计算机系统概论1、计算机硬件的五大部件?三大部分?运算器 存储器…

zipsys驱动签名工具_全球首发 300系列主板USB WIN7 64位驱动 SMXDIY

本版为改版驱动,仅供SMXDIY会员学习测试,禁止传播。众所周知,H310/B360/H370/Z390是没USB的WIN7驱动的。网上也找不到相关的资料,大家普遍默认没驱动,但这已经成为历史。我们这发布的是真的驱动,可以整合到…

excel筛选排序从小到大_excel表格怎么按字数的多少来排列!

excel表格怎么按字数的多少来排列为了更好的做好我们的语料编定及翻译工作,尤其是个别语料数量较多,最多可达2000条。我们可以将字数少的,意图明确的,不会有异议的,我们可以根据每句话的字数,用excel来进行…

计算机系统的工作方式,某计算机系统输入/输出采用双缓冲工作方式,其工作过程如下图所示,假设磁盘块与缓冲 - 信管网...

第2题:实时操作系统(RTOS)内核与应用程序之间的接口称为( )。A.I/O接口B.PCIC.APID.GUI答案解析与讨论:www.cnitpm.com/st/2867029381.html第3题:嵌入式处理器是嵌入式系统的核心部…

怎么从转移特性曲线上看dibl_「科普向」这篇让你快速搞懂IGBT的静态特性

IGBT的静态特性其实并非难以理解的东西,即便是对于外行人而言。刚接触那会儿,看到转移特性、输出特性之类的就想溜之大吉,加之网上查询的资料一概笼统简单,只描述特性曲线所表示的关系结果,却并不解释曲线为何这里弯曲、那里平直&…

对CORS OPTIONS预检请求的一些思考

前后端分离模大势所趋,跨域问题更是老生常谈。《程序员应对浏览器同源策略的姿势》一文提到三种跨域请求方案,重点讲述了w3c和浏览器厂商推出的CORS规范。同源策略 所谓同源是指域名、协议、端口相同。不同源的浏览器脚本(javascript、ActionScript、ca…

强烈推荐:SiteServer CMS开源免费的企业级CMS系统!

说到CMS,大家都知道织梦、帝国CMS、HPCMS、动易等知名老牌的!这些东西也可以拿来就用,上次看到一个个人开源的cms:MCMS。基于SpringBoot 2架构,前端基于vue、element ui。每月28定期更新版本,为开发者提供…

计算机函数公式中怎么合并合并,Excel用函数和公式瞬间实现把表格全部合并到一个表中去...

将多张工作表汇总到一张工作表,这是什么意思呢?可以理解为把表格全部合并到一个表中去,之前使用VBA代码实现,本文将教会大家一种快速的方法,用函数和公式瞬间实现多表合并。例如:有N多个以月份命名的excel工…

. NET5一出,. NET岗面试普遍喊难,真相是…

.NET高级开发/架构师笔试题TOP101、如何设计一个高并发系统?2、如何实现一个.Net5 IOC框架?3、100W并发4G数据,10W并发400G数据,如何设计Redis存储方式?4、如何实现负载均衡Hash一致性算法?5、DotNetty能够…

数据库年月日时分秒_数据库基本使用系列(二)

书接上回,上回说到数据库的发展历史,存储引擎以及在库层面的一些操作,这次来讲一下数据库中的一些基本的一些数据格式以及对表的一些操作。数据类型数据库提供的数据类型,包括整数类型、浮点数类型、定点数类型、位类型、日期和时…

netcore读取json文件_【NET Core】.NET Core中读取json配置文件

在.NET Framework框架下应用配置内容一般都是写在Web.config或者App.config文件中,读取这两个配置文件只需要引用System.Configuration程序集,分别用System.Configuration.ConfigurationManager.AppSettings["SystemName"];//读取appSettings配…