关闭

Docker基础教程——数据管理

标签: DockerDocker教程Docker数据管理
789人阅读 评论(0) 收藏 举报
分类:

原文出自:http://blog.csdn.net/anxpp/article/details/52491131

    我们在使用docker 的时候,会产生很多数据,比如web服务器啊,数据库之类的,有时我们还需要备份或复制这些数据,这就需要涉及到Docker的数据管理了。

    docker容器中管理数据主要分两种:

  • 数据卷
  • 数据卷容器

1、数据卷

    数据卷是一个可供容器使用的特殊目录,它会绕过文件系统,可以提供很多有用的特性:

  • 数据卷可以在容器之间共享个重用
  • 对数据卷的修改会立即生效
  • 对数据卷的更新不会影响镜像
  • 卷会一直存在直到没有容器使用

    数据卷的使用类似于Linux下对目录或文件进行mount操作。

    在容器内创建数据卷

    在用docker run命令的时候,使用-v标记可以在容器中创建一个数据卷,多次使用该参数可以创建多个数据卷。

    比如要使用training/webapp镜像创建一个web容器,并创建一个数据卷挂载到容器的/webapp目录:

docker run -d -P --name web -v /webapp training/webapp Python app.py

    挂载一个主机目录作为数据卷

    也可以直接指定挂载一个本地已有目录到容器中作为数据卷,同样使用-v参数,依然是刚才的例子:

 <span style="font-family: Arial, Helvetica, sans-serif;">docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp Python app.py</span>

    此时加载主机的/src/webapp目录到容器的/opt/webapp目录下。
    这个功能可以为我们提供很多便捷,比如我们可以放置一些程序或者数据到本地目录中,然后再容器中运行和使用。

    这个本地目录的路径必须是绝对路径,如果目录不存在,会被自动创建。

    Docker挂载数据卷的默认权限是读写(rw),我们也可以指定为只读(ro):

docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp Python app.py
    加了只读后,容器内挂载的数据卷数据是无法修改的。

    挂载一个本地主机文件作为数据卷

    -v标记也可以从主机挂载单个文件到容器中作为数据卷。

    比如需要记录在容器中输入过的历史命令:

docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash

2、使用数据卷容器

    Docker镜像是如此的方便,针对以上的数据管理,也提供了一个普通的容器:数据卷容器。

    他可以使容器间共享一些持续性的数据变得更加简单。

    使用步骤:

  • 创建一个数据卷容器dbdata,并在其中创建一个数据卷挂载到/dbdata(使用--volumes-from参数所挂载数据卷的容器自身并不需要保持在运行状态):
docker run -it -v /dbdata --name dbdata ubuntu
  • 然后再其他容器中使用--volumes-from来挂载dbdata容器中的数据卷,比如有两个容器dbq和db2:

docker run -it --volumes-from dbdata --name db1 ubuntu
docker run -it --volumes-from dbdata --name db2 ubuntu
    此时db1和db2都挂载同一个数据卷到相同的/dbdata目录下。三个容器任意一个在该目录的数据修改,其他容器都能看到。
    可以多次使用--volumes-from参数来从多个容器挂载多个数据卷。也可以从其他已经挂载了容器卷的容器来挂载数据卷:

docker run -d --name db3 --volumes-from db1 training/postgres
    如果删除了挂载的容器(包括dbdata、db1、db2),数据卷并不会被自动删除。

    如果需要删除一个数据卷,必须在删除最后一个还挂载它的容器时,显示使用docker rm -v 来指定同时删除关联的容器。

    利用数据卷容器迁移数据

    可以利用数据卷容器对其中的数据卷进行备份、恢复,以实现数据的迁移。

    备份

    备份dbdata数据卷容器中数据卷命令如下:

docker run --volumes-from dbdata -v $(pwd):/backup --name worker ubuntu tar cvf /backup/backup.tar /dbdata
    解释:

  • 首先利用ubuntu镜像创建一个容器worker
  • 使用--volumes-from dbdata参数让worker容器挂载dbdata容器的数据卷
  • 使用-v $(pwd):/backup参数挂载本地的当前目录到worker容器的/back目录下。
  • worker容器启动后,使用tar cvf /backup/backup.tar /dbdata命令将/dbdata下内容备份为容器内的backup/backup.tar,即宿主主机当前目录下的backip.tar。
    恢复

    恢复数据到容器的操作:

  • 创建一个带有数据卷的容器dbdata2:

docker run -v /dbdata --name dbdata2 ubuntu /bin/bash

  • 然后创建另一个容器,挂载dbdata2的容器,并使用untar解压备份文件到所挂载的容器卷中即可:

docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar


小节

    docker为数据管理提供了充分的支持,并且,使用数据卷容器是一个不错的选择。
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Docker容器中的数据管理

Docker容器中的数据管理Docker容器中的数据管理 概述 数据卷 在容器内创建一个数据卷 数据容器 利用数据卷容器迁移数据 利用数据卷容器进行数据备份 利用数据卷容器进行数据恢复 概述用户在使用...
  • jpzhu16
  • jpzhu16
  • 2016-07-15 10:34
  • 2031

Docker数据管理

Docker数据管理 用户在使用Docker的过程中,往往需要能查看容器内应用产生的数据,或者需要把容器内的数据进行备份,甚至多个容器之间进行数据共享,这必然涉及到Docker的数据管理。 ...
  • wangdaoge
  • wangdaoge
  • 2016-09-23 17:09
  • 330

Docker 数据管理

Docker 中的数据管理主要有 2 个方法,数据卷和数据卷容器数据卷数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:数据卷可以在容器之间共享和重用对数据卷的修改...
  • qcpm1983
  • qcpm1983
  • 2014-10-23 16:46
  • 1722

Docker数据管理

容器中管理数据主要有两种方式: 数据卷(Data Volumes) 数据卷容器(Data Volume Containers) 数据卷数据卷是一个可供容器使用的特殊目录,它绕过文件系统,可以提供很多有...
  • Noob_f
  • Noob_f
  • 2016-10-20 16:30
  • 2466

docker数据管理

数据卷挂载1. 挂载本地的目录到容器里 docker run -tid -v /data/:/data centos bash //-v 用来指定挂载目录,:前面的/data/为宿主机本地目录,:...
  • qq_25611295
  • qq_25611295
  • 2017-11-21 15:35
  • 98

Docker数据管理

数据卷作用: 1. 可以在容器之间共享或重用 2. 对数据卷的修改会立即生效 3. 对数据卷的更新不会影响镜像 4. 数据卷会一直存在,直到没有容器使用 数据卷的使用,类似于 Linux 下...
  • bayernolive
  • bayernolive
  • 2015-09-21 16:26
  • 353

docker 数据管理

Docker数据管理容器中管理数据有两种方式 数据卷 (Data Volumes) 数据卷容器 (Data Volume Containers) 一、数据卷 数据卷是一个可供容器使用的特殊目录,...
  • wanglei_storage
  • wanglei_storage
  • 2015-09-15 16:05
  • 573

Docker - 数据管理

在容器中管理数据主要有两种方式:数据卷( Data volumes)和数据卷容器( Data volume containers)。 数据卷 数据卷是一个可供一个或多个容器使用的特殊目录。数据卷的使用...
  • anliven
  • anliven
  • 2017-06-06 21:48
  • 66

Docker 数据管理

在容器中管理数据主要有两种方式 数据卷(Data volumes) 数据卷容器(Data volume containers) 数据卷 数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS...
  • kangvcar
  • kangvcar
  • 2017-06-20 13:14
  • 1690

Docker的数据管理

一.在容器中数据主要形式 1.数据卷(Data volumes) 2.数据卷容器(Data volume containers) 二.数据卷 1.数据卷的特征 数据卷可以在容器之间共享和重用...
  • jiang_xinxing
  • jiang_xinxing
  • 2016-12-27 15:35
  • 89
    个人资料
    • 访问:749413次
    • 积分:5468
    • 等级:
    • 排名:第5714名
    • 原创:96篇
    • 转载:1篇
    • 译文:0篇
    • 评论:292条
    博客专栏
    其他信息