[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 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理 ...
随机推荐
- 利用 ELK系统分析Nginx日志并对数据进行可视化展示
一.写在前面 结合之前写的一篇文章:Centos7 之安装Logstash ELK stack 日志管理系统,上篇文章主要讲了监控软件的作用以及部署方法.而这篇文章介绍的是单独监控nginx 日志分析 ...
- ASP.NET MVC和WebForm 轻松实现前端和后端的双重验证 jquery.validate+ValidationSugar
上次不足的改进 可能上一个贴子给大家带来很多误解,所以我这次把DEMO完善了两个版本 [ASP.NET WEBFROM]和[ ASP.NET MVC] 修改了一些BUG,并且修改了一些细了 在上个贴子 ...
- [Latex]实现行内高亮
Latex的行内高亮 前两天想要在做的小操作系统实验指导书里使用行内高亮,一开始虽然有命令 \mint{Language}|contents| 但是无奈只能实现跳行高亮,即不能实现行内高亮.即代码高亮 ...
- 重构第11天 使用策略代替Switch(Switch to Strategy)
理解:策略就是平常设计模式中所说的策略模式.因为当你有一个庞大的switch方法的时候,每一次新加一个条件,都要去修改这个方法,这样耦合性太高,不易维护也不易扩展.这样我们就可以使用策略的设计模式,使 ...
- LeeCode - Unique Binary Search Trees
题目: Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For e ...
- 2015年最热门前端框架React 入门实例教程
现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑. React 起源于 Face ...
- 使用HtmlAgilityPack爬取网站信息并存储到mysql
前言:打算做一个药材价格查询的功能,但刚开始一点数据都没有靠自己找信息录入的话很麻烦的,所以只有先到其它网站抓取存到数据库再开始做这个了. HtmlAgilityPack在c#里应该很多人用吧,简单又 ...
- sns社区架构设计案例分享(二)
源码下载地址:http://www.jinhusns.com/Products/Download/?type=xcj 五. 架构使用说明 > 缓存 > 使用说明 > (一)基础类库介 ...
- 【C#】1.1 第1章学习要点
分类:C#.VS2015 创建日期:2016-06-14 教材:十二五国家级规划教材<C#程序设计及应用教程>(第3版) 一.配套源程序(VS2015版)的运行截图 VS2015版的配套源 ...
- 在一个XAML中点击按钮,界面跳转到另一个XAML界面方法
private void ButtonGo_camerapage(object sender, RoutedEventArgs e) { this.Content = new cameraPage() ...