docker数据管理

Docker 数据管理

     在生产环境中使用 Docker ,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及容器的数据管理操作

     容器中的管理数据主要有两种方式:
     数据卷 Data Volumes 是一个可供容器使用的特殊目录(存在在宿主机上)
     数据卷容器(Data Volume Containers 使用特定容器维护数据卷

注1:上节课还介绍过cp命令在宿主机和docker容器之间复制文件
docker cp 宿主机绝对路径 容器id:容器的路径
docker cp /zking/readme.txt 容器id:/work

目的:eg:把宿主机/zking/readme.txt命令复制到容器的/work目录下

数据卷(Data Volumes)

  1. 创建数据卷
    docker volume create 数据卷名字
  2. 查看数据卷
    docker volume ls
  3. 查看数据卷详情
    docker volume inspect my-vol
  4. 删除数据卷
    docker volume rm 数据卷名字

     数据卷是一个可供一个或多个容器使用的特殊目录,它将主机操作系统目录直接映射进容器,它可以提供很多有用的特性:

  1. 数据卷可以在宿主机和容器之间共享和重用

  2. 对数据卷的修改会立马生效

  3. 对数据卷的更新,不会影响镜像

  4. 数据卷 默认会一直存SS
    ## 挂载数据卷,最好是通过run而非create/start创建启动容器
    ## create/start命令创建启动容器后,再挂载数据卷相当麻烦,要修改很多配置文件,但并非不可以

  5. 启动一个挂载数据卷的容器
    ## demo1
    docker run -it -d --name tomcat02
    –mount type=volume,source=my-vol,target=/webapps centos:latest /bin/bash

    就是把宿主机/var/lib/docker/volumes目录下的数据卷中的数据映射到容器tomcat02的webapps目录下

     ## demo2
     docker run -d -it --name tomcat03 \
     --mount type=bind,source=/zking,target=/tools centos:latest /bin/bash
    

注1:linux命令结尾加斜杠有什么用
加了“\”意为将最后的回车换行给注释了,系统理解为命令还没有结束,因而是继续等待用户进行输入,直到读到结束符,如回车

注2:source=my-vol,target=/webapps
–mount选项的type参数支持三种类型的数据卷
–mount标志:由多个名值对组成,逗号分隔,每个键值由 = 元组组成

  1. type=volume普通数据卷(默认即这种类型),映射到主机/var/lib/docker/volumes路径下(就是demo1)
    –mount type=volume,source=my-vol,target=/webapp
    注:type的默认值,提前先创建数据卷
  2. bind:绑定数据卷,映射到主机指定路径下(推荐)
    –mount type=bind,source=/webapp,destination=/webapp2
  3. tmpfs :临时数据卷,只存在于内存中(不推荐)
    docker run -d
    -it
    –name tmptest
    –mount type=tmpfs,destination=/app
    nginx:latest

数据卷容器

     如果用户需要在多个容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。
     数据卷容器也是一个容器,但是它的目的是专门提供数据卷给其他容器挂载

数据卷容器相关操作

  1. 新建数据卷容器
    docker run -itd --name data_tomcat04 -v /_data centos:latest

    相比之前的run命令创建并进入容器就多了一个-v的参数:容器挂载存储卷,挂载到容器的某个目录
    docker run -it -d --name webapp centos:latest
    在这里插入图片描述

  2. 用容器tomcat05测试数据卷容器是否可用
    docker run -itd --name tomcat05 --volumes-from data_tomcat04 centos:latest
    docker exec -it tomcat05 bash
    cd _data
    ## 使用echo命令向tomcat05_test.txt中写入内容
    echo “tomcat05 test” > tomcat05_test.txt
    在这里插入图片描述
    在这里插入图片描述

  3. 备份数据卷容器
    docker run -it -d --name data_tomcat04 -v /_data centos:latest
    docker run --rm --name beifen --volumes-from data_tomcat04 -v /zking:/container_backup centos:latest tar cvf /container_backup/backup.tar /_data

     新建1个名为beifen的(暂时性,之后会删除)容器,由于volumes-from了data_tomcat04,所以在根目录下也会生成1个_data文件夹,经过执行命令后,将_data文件下的数据压缩在container_backup文件夹下,并存在宿主机上的host_backup_path下

注:
1)run:create+start
2)–rm:创建之后删除容器
3)–name:容器名称
4)–volumes-from:来自于哪个数据卷容器的容器NAME
5)-v:给容器挂载存储卷,挂载到容器的某个目录

  1. 还原数据卷容器
    1. 新建一个数据卷容器data_tomcat05
      docker run -it -d --name data_tomcat05 -v /_data centos:latest

    2. 备份data_tomcat05(其实就是把data_tomcat05打了个压缩包得到一个backup.tar的压缩包)
      docker run --rm --name beifen --volumes-from data_tomcat05 -v /zking:/container_backup centos:latest tar cvf /container_backup/backup.tar /_data

    3. 还原(就是把backup.tar的压缩包解压出来))
      docker run --rm --name huanyuan --volumes-from data_tomcat04 -v /zking:/container_backup centos:latest tar xvf /container_backup/backup.tar -C /_data
           新建1个名为huanyuan的(暂时性,之后会删除)容器,由于volumes-from data_tomcat05,所以在根目录下也会生成1个_data文件夹,宿主机上的host_backup_path下的压缩数据映射到了container_backup文件夹下,并解压至_data文件夹下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值