美文网首页Docker 学习
Docker 学习 - 5. 数据管理

Docker 学习 - 5. 数据管理

作者: 消失黎明 | 来源:发表于2019-06-13 17:58 被阅读0次

不好意思,最近这段时间工作有一些忙,都快忘记更新docker学习的内容了,罪过罪过。这一次分享一下Docker对数据的管理方式。
用户在使用Docker的过程中,往往需要查看容器里的数据,或者对容器里的数据进行备份,甚至是数据在若干个容器之间进行共享,这里就需要对容器的数据进行管理。

容器中对数据的管理有两种方式:

  • 数据卷
  • 数据卷容器

这里介绍如何创建数据卷,并将本地的文件目录或文件挂载到容器的数据卷中。然后接下来会介绍如何使用数据卷容器在容器和主机、容器和容器之间共享数据,实现数据的备份和恢复。

数据卷

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

  • 数据卷可以在容器之间共享和重用
  • 对数据卷的更新,不会影响镜像
  • 对数据卷的修改会立马生效
  • 卷会一直存在,直到无容器可用
    数据卷的作用,类似于Linux中的mount操作。
在容器内创建一个数据卷

在使用docker run命令时候,使用-v标记可以在容器内创建一个数据卷。多次使用-v可以创建多个数据卷。
例如,我们可以使用training/webapp镜像创建一个web容器,并创建一个数据卷挂载到容器的/webapp目录:

$ sudo docker run -d -P  --name  web -v /webapp   training/webapp python app.py
挂载一个主机目录作为数据卷

使用-v标记也可以指定一个本地的目录到容器中作为数据卷:

$ sudo docker run -d -P  --name web -v /src/webapp:/opt/webapp training/webapp python app.py

上面的命令是加载主机的/src/webapp到容器的/opt/webapp 目录:
这个功能在进行测试的时候,用户可以放一些程序或者数据到本地目录中,然后在容器内运行和使用。此外,本地目录的路径必须是绝对路径,如果目录不存在,Docker也会自动创建。

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

-v标记也能够从主机文件目录挂载单个文件到容器的中作为数据卷:

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

数据卷容器

如果用户需要在容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。数据卷容器其实是一个普通的容器,可以用这个数据卷容器提供数据卷供其他的容器的挂载。
首先,创建一个数据卷容器dbdata,并在其中创建一个数据卷挂载到/dbdata

$ sudo docker run -it -v /dbdata --name dbdata ubuntu
root@3ed94f279b6f:/# 

查看/dbdata目录

root@3ed94f279b6f:/# ls
bin  boot  dbdata  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run sbin  srv  sys  tmp  usr  var

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

$ sudo docker run -it  --volumes-from  dbdata  --name  db1  ubuntu
$ sudo docker run -it  --volumes-from  dbdata  --name  db2  ubuntu 

由此,容器db1和db2都挂载同一个数据卷到相同的/dbdata目录,三个容器任何一方在该目录下的写入,其他的容器都能够看到。

如果删除了挂载的容器(包括dbdata、db1和db2),数据卷并不会被自动删除。如果要删除一个数据卷,必须在删除最后一个还挂载它的容器时显式地使用docker rm -v命令来指定同时删除关联的容器。

利用数据卷容器完成数据迁移

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

备份

使用下面的命令来备份dbdata数据卷容器内的数据卷

$ sudo 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容器的/backup目录。
worker容器启动后,使用了tar cvf /backup/backup.tar /dbdata命令将/dbdata下内容备份为容器内的/backup/backup.tar,即宿主机当前目录下的backup.tar。

相关文章

  • Docker 学习 - 5. 数据管理

    不好意思,最近这段时间工作有一些忙,都快忘记更新docker学习的内容了,罪过罪过。这一次分享一下Docker对数...

  • Docker的那些事儿—Docker数据管理(28)

    从本节开启Docker存储部分,学习docker是如何对数据管理的。 上一篇:Docker的那些事儿—容器与外部网...

  • 39-docker(一)

    本章内容 ◆ Docker简介◆ Docker 镜像与制作◆ Docker 数据管理◆ Docker 网络◆ Do...

  • docker学习——docker数据管理

    一.基本概念 数据卷:容器内数据直接映射到本地主机环境 数据卷容器:使用特定容器维护数据卷 二 .相关操作 1.数...

  • Docker Data Management

    对image、container有了基本认知之后,继续学习下docker的数据管理。呼,天气变化很大,爱护自己,注...

  • docker(三)docker镜像文件

    数据管理前提1>docker容器不应该负责持久化2>业界使用docker,等价于使用服务3>官方使用docker,...

  • docker 镜像与容器

    Docker中通过模板创建镜像,Docker容器、仓库及数据管理[https://blog.51cto.com/f...

  • Docker学习五、docker容器数据卷

    前言、Docker中的数据管理 Docker镜像是由多个只读层叠加而成,启动容器时,Docker会加载只读层并会在...

  • Docker基本命令

    镜像操作相关命令 容器操作相关命令 访问Docker仓库 Docker数据管理 端口映射与容器互联 Dockerf...

  • docker学习(八)docker容器的数据管理

    数据管理 数据卷 定义: 数据卷使经过特殊设计的目录,可以绕过联合文件系统,为一个或多个容器提供服务。数据卷设计的...

网友评论

    本文标题:Docker 学习 - 5. 数据管理

    本文链接:https://www.haomeiwen.com/subject/fhcsfctx.html