Docker的数据管理

    用户在使用Docker的过程中,往往需要能查看容器内应用产生的数据,或者需要把容器内的数据进行备份,甚至多个容器之间进行数据的共享,这必然涉及容器的数据管理操作。

    容器中管理数据主要有两种方式:

  • 数据卷

  • 数据卷容器

一、数据卷

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

  • 数据库可以在容器之间共享和重用。

  • 对数据卷的修改会立刻生效。

  • 对数据卷的更新,不会影响镜像。

  • 卷会一直存在,直到没有容器使用。

1、在容器内创建一个数据卷

    使用-v标记可以在容器内创建一个数据卷。多次使用-v标记可以创建多个数据卷。

1
docker run -d -P --name web - v  /webapp  jdeathe /-ssh

wKioL1dqLO_ByHibAAJiELT86Ck903.jpg

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

    使用-v标记可以指定挂载一个本地的已有目录到容器中作为数据卷,比如我们把主机的/home/webapp挂载到容器的/mnt/webapp目录。

1
docker run -d -P --name web - v  /home/webapp : /mnt/webapp  jdeathe /centos-ssh

wKiom1dqLp3AXhyWAAEuofWhHPs087.jpg

3、挂载本地主机文件作为数据卷

    如果直接挂载一个文件到容器,使用文件编辑工具,可能会造成文件inode的改变。

1
docker run -ti - v  /root/ .bash_history: /root/ .bash_history jdeathe /centos-ssh  /bin/bash

    同步容器和主机的命令历史。

wKiom1dqMLzTNROzAACy8YUrmcM561.jpg

二、数据卷容器

    如果用户需要在容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。数据卷容器其实就是一个普通的容器,专门用它提供数据卷供其他容器挂载使用方法如下。

    首先创建一个数据卷容器dbdata,并在其中创建一个数据卷挂载到/dbdata:

1
  docker run -d --name dbdata - v  /dbdata  jdeathe /centos-ssh

wKiom1dqN0XirxMMAACyAD8myRw027.jpg

    然后,可以在其他容器中使用--volumes-from来挂载dbdata容器中的数据卷,下面我们创建db1和db2两个容器,并从dbdata容器来挂载数据卷。

1
2
docker run -d --name db1 --volumes-from dbdata jdeathe /centos-ssh
docker run -d --name db2 --volumes-from dbdata jdeathe /centos-ssh

wKioL1dqOQiTnd1bAAFQQBMCOJ0817.jpg

    我们可以看到三个容器共用一个数据卷,大家的数据都是同步的。其他的一些用户大家可以参照其帮助文档来进行测试。

更多Docker相关教程见以下内容: 

Docker 的详细介绍请点这里
Docker 的下载地址请点这里

猜你喜欢

转载自www.linuxidc.com/Linux/2016-08/134231.htm