zoukankan      html  css  js  c++  java
  • Docker数据管理

    Docker中的容器一旦删除,容器本身对应的rootfs文件系统就会被删除,容器中的所有数据也将随之删除。但有的时候,我们想要数据如日志或其他需要持久化的数据,不随容器的删除而删除。还有的时候,希望在同一台Host的容器之间可以共享数据。

    Docker提供了数据卷(data volume),数据卷除了可以持久化数据,还可以用于容器之间共享数据。

    数据卷

      Docker中有两个与数据卷有关的参数:

      -v=[]

        通过-v参数可以给容器创建数据卷,有三个变量:

        host-dir:表示Host上的目录,如果不存在,Docker会自动在host上创建该目录。

        container-dir:表示容器内对应的目录,如果目录不存在,Docker也会在容器内部创建该目录。

        rw|ro:用于控制数据卷的读写权限。

      --volumes-from=“”

         从指定的容器装入卷,创建一个纯粹用来管理数据的容器,将其他的容器引用这个数据卷容器。

         通常用来处理日志。多个容器的应用,将系统日志存储在一个容器卷里面

      通常情况下,使用-v。

      可以不指定host-dir直接在容器内创建一个数据卷:

      docker run --it --rm -v /volume --name test centos:6.5 /bin/bash

      进入容器,使用df -lh  可以看到host的根分区被挂载到了容器的 /volume ,实际上docker会在host的/var/lib/docker/vfs/dir/目录生产一个随机的目录,然后挂载容器的 /volume。

      对于这种方式创建的数据卷,当容器被删除后,如果没有其他容器引用该数据卷,对应的host目录也会被删除。所以,如果不想host目录被删除,必须制定host的目录。

        

      备份数据卷

      可以通过参数“--volumes-from”从数据卷挂载数据卷,然后备份数据卷中的数据,例如:

    docker run --volumes-from data -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /data
    

      创建一个新的容器,将Host本地目录挂载到/backup,然后将数据卷容器data的书卷/data 打包到/backup/backup.tar。然后再Host的当前目录下就可以得到backup.tar。

      

      恢复数据卷

      我们可以将备份的数据恢复到原有容器或者其他任何容器。假设我们想把backup.tar数据恢复到一个新的容器data2:

    docker run -v /data --name data2 centos:6.5 /bin/bash
    

      然后执行下面的命令即可:

      

    docker run --name test --volumes-from data2 -v $(pwd):/backup centos:6.5 tar xvf /backup/backup.tar
    

      

      

  • 相关阅读:
    程序员私活话题
    关于未来房价
    关于.net core 中的signalR组件的使用
    typescript nodejs 依赖注入实现
    .net core mvc启动顺序以及主要部件4-MVC
    .net core mvc启动顺序以及主要部件3-Startup
    .net core mvc启动顺序以及主要部件2
    .net core mvc启动顺序以及主要部件1
    关于.NET HttpClient方式获取微信小程序码(二维码)
    ASP.NETCore 3.0 Autofac替换及控制器属性注入及全局容器使用
  • 原文地址:https://www.cnblogs.com/YatHo/p/7809450.html
Copyright © 2011-2022 走看看