[docker] 管理docker容器中的数据
之前我们介绍了Docker的基本概念(前面的没翻译...),了解了如何使用Docker镜像进行工作,并且学习了网
络和容器之间的链接.这一节我们将讨论如何管理容器中及容器之间的数据.我们将查看下面两种管理Docker中数据的主要方法.
- 数据卷
- 数据卷容器
数据卷
一个数据卷就是经过特殊设计的,在一个或多个容器中通过UFS文件系统提供的一些特性
实现数据持久化或共享.
- 数据卷可以在容器之间共享和重复利用
- 可以对数据卷里的内容直接进行修改
- 对镜像的更新不会改变数据卷的内容
- 卷会一直持续到没有容器使用他们
添加一个数据卷
你可以使用带有 -v 参数的 docker run 命令给容器添加一个数据卷.在一个 docker run
中可以多次使用 -v 参数来达到挂载多个数据卷的目的.我们现在在web应用容器中挂载
单个卷.
$ sudo docker run -d -P --name web -v /webapp training/webapp python app.py
这将会在容器中创建一个/webapp卷
提示: 你也可以在Dockerfile中使用VOLUME指令来给任何从那个镜像创建的容器添加
一个或多个新数据卷
挂载宿主文件夹到数据卷
另外,使用 -v 参数也可以挂载宿主的文件夹到容器里
$ sudo docker -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py
这样会把本地文件夹/src/webapp挂在到容器中的/opt/webapp目录.对于测试来说这是
非常有用的.例如我们可以把源码挂载到容器中并通过修改源码查看应用运行情况.在
宿主机上的文件夹必须是绝对路径,而且当文件夹不存在时会自动创建.提示:出于可移植性和共享的木的挂载宿主文件的功能在Dockerfile中无法使用.就宿
文件而言,宿主依赖可能事容器无法在所有的主机上正常工作.默认情况下Docker以读写权限挂载数据卷,但是我们也可以以只读方式进行挂载.
$ sudo docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py
这里我们挂载了和上面相同的一个目录 /src/webapp.但是我们添加了 ro 选项来制定
挂载时文件权限应该是只读的.
创建和挂在一个数据卷容器
如果你有一些持久数据需要在容器之间共享或想要使用非持久性容器,最好的方式是创
建一个命名数据卷容器,然后从数据卷容器中挂载数据.我们来创建一个带有卷的命名容器来共享数据.
$ sudo docker run -d -v /dbdata --name dbdata training/postgres
你可以在另外一个容器中使用 --volumes-from 标记来挂在/dbdata卷
$ sudo docker run -d --volumes-from dbdata --name db1 training/postgres
然后是另外一个容器同时也挂载/dbdata卷:
$ sudo docker run -d --volumes-from dbdata --name db2 training/postgres
你可以使用多个 --volumes-from 参数来把多个容器中的多个数据卷放到一起.
你也可以挂载通过挂载dbdata容器实现的容器db1和db2来扩展关系链
$ sudo docker run -d --name db3 --volumes-from db1 training/postgres
备份,恢复和迁移数据
另外一个有用的功能是使用它们来进行备份,恢复或迁移数据.如下所示,我们使用
--volumes-from 标记来创建一个挂载了要备份数据卷的容器.
$ sudo docker run --volumes-from dbdata -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata
这里我们创建并登录了一个新容器,挂载了dbdata容器中的数据卷.并把一个本地目录挂
载到了/backup下.最后我们传入了一条tar命令来备份dbdata卷到/backup下.当命令执
行完成后容器就会停止运行,并保留一个dbdata的备.然后你就可以恢复数据到同一个或者另外创建的容器中.创建一个新的容器:
$ sudo docker run -v /dbdata --name dbdata2 ubuntu /bin/bash
然后解压备份文件到新容器的数据卷中:
$ sudo docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar
你可以使用上面的技术及你喜欢的工具进行自动数据备份,迁移和恢复.
[docker] 管理docker容器中的数据的更多相关文章
- Windows10下的docker安装与入门 (二)使用docker引擎在容器中运行镜像
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...
- 利用copy函数简单快速输出/保存vector向量容器中的数据
如果要输出vector中的数据我们可以通过循环语句输出,更加简便的方法是利用copy函数直接输出,例子: #include "stdafx.h" #include <iost ...
- ca12a_c++顺序容器的操作5_访问容器中的数据元素
ca12a_c++顺序容器的操作5_访问容器中的数据元素访问元素:c.back()..显示最后一个数据c.front() ..显示第一个数据c[n],n就是下标,适合vector与dequec.at( ...
- Docker备份Gitlab容器以及还原数据
概述 今天,我们将学习如何快速地对docker容器进行快捷备份.恢复和迁移.Docker是一个开源平台,用于自动化部署应用,以通过快捷的途径在称之为容器的轻量级软件层下打包.发布和运行这些应用.它使得 ...
- docker~在centos容器中安装新程序
上一篇我们使用了阿里加速器安装了centos镜像,然后创建了一个新容器,运行了这个镜像,这一讲我们来为这个镜像添加一些应用程序,然后再保存容器,push容器到仓储,大家就可以直接pull我生产的容器了 ...
- 分布式服务框架 Zookeeper -- 管理分布式环境中的数据
转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/index.html Zookeeper 分布式服务框架是 Apa ...
- 分布式服务框架 Zookeeper -- 管理分布式环境中的数据(转载)
本文转载自:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/ Zookeeper 分布式服务框架是 Apache Had ...
- 分布式服务框架 Zookeeper -- 管理分布式环境中的数据--转载
原文:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/ Zookeeper 分布式服务框架是 Apache Hadoop ...
- 【Zookeeper】分布式服务框架 Zookeeper -- 管理分布式环境中的数据
Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理 ...
随机推荐
- FAQ: Machine Learning: What and How
What: 就是将统计学算法作为理论,计算机作为工具,解决问题.statistic Algorithm. How: 如何成为菜鸟一枚? http://www.quora.com/How-can-a-b ...
- ASP.NET MVC 快速开发框架之 SqlSugar+SyntacticSugar+JQWidgetsSugar+jqwidgets
jqwidgets.js: 是一个功能完整的框架,它具有专业的可触摸的jQuery插件.主题.输入验证.拖放插件.数据适配器,内置WAI-ARIA(无障碍网页应用)可访问性.国际化和MVVM模式支持. ...
- ecshop的Mysql操作类
摘要,这是直接摘抄的ecshop的mysql操作类:不过他这里的缓存是用的文件缓存,我们如果想直接使用,可以替换成memcache的或者redis的! <?php /** * ECSHOP MY ...
- Java魔法堂:初探MessageFormat.format和ChoiceFormat
一.前言 刚开始从.net的转向java的时候总觉得 String.format 用得不习惯,希望格式模版会这样 {}, }$s,$s's cat.%2$s,this is %1$s's dog. . ...
- JS魔法堂:浏览器模式和文档模式怎么玩?
一.前言 从IE8开始引入了文档兼容模式的概念,作为开发人员的我们可以在开发人员工具中通过“浏览器模式”和“文档模式”(IE11开始改为“浏览器模式”改成更贴切的“用户代理字符串”)品味一番,它的出现 ...
- STL or 线段树 --- CSU 1555: Inversion Sequence
Inversion Sequence Problem's Link: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1555 Mean: 给你一 ...
- Jquery:ajax跨域请求处理
昨天朋友想做个图片懒加载的效果,朋友是前端的,我这边给他提供数据,程序写好了放到服务器上,本地测试访问时却报jquery跨域的问题,于是找度娘了解了一下jquey如何处理,网上有很多参考文章,但没细看 ...
- jquery实现表格内容筛选
对于表格来说,当数据比较多的时候,我们无法一页一页的查找,这时可以通过一个搜索框来实现搜索. 对于这个搜素框,我们为了更好的体验可以利用keyup事件实现在用户输入的时候就开始筛选,而不是填完以后点击 ...
- wpf 自定义消息框
相信很多人用过MessageBox.show(),是不是觉得这个消息框有点丑呢,反正我是觉得有点丑的,所以我自己重写了一个.先不说,上两幅图对比先: 当然,也不是很好看,不过比原有的好多了. 不多说了 ...
- 优化win2d实现的萤火虫粒子效果
前几天我发了个技术博客,告诉大家怎样用Win2D 画萤火虫动画 . 那种绘制萤火虫的方式虽然画质高,但是性能不好,萤火虫数量超过50就可以感受到帧数下降. 我今天想到了一种牺牲画质提升性能的绘制方式, ...