docker 数据管理

1. 数据管理

1.1 什么是数据管理
  • docker的镜像是只读的。
  • 容器可以进行操作,但数据不能保存到容器中。
  • 数据保存需要使用数据卷和数据卷容器。
1.2 容器、数据卷、数据卷容器关系图
1.2.1 什么是数据卷
  • 宿主机的某个目录映射到容器中,作为数据存储的目录。
1.2.2 什么是数据卷容器
  • 宿主机的某个目录使用容器的方式来表示。
  • 其他应用容器将数据保存在这个容器中。
  • 达到大批量应用数据同时存储的目的。

2. 数据管理命令

2.1 数据卷命令列表
  • docker run --help | grep volume 显示数据卷相关命令。
2.2 数据卷操作
  • docker run -itd --name [容器名字] -v [宿主机文件]:[容器文件] [镜像名称]
2.3 数据卷容器操作
  1. 创建数据卷容器
    • docker create -v [宿主机文件]:[容器数据卷目录] --name [容器名字] [镜像名称] [命令(可选)]
  2. 使用数据卷容器
    • docker run --volumes-from [数据卷容器名字] -d --name [容器名字] [镜像名称] [命令(可选)]

3. 数据卷、数据卷容器实战

3.1 数据卷实战
3.1.1 挂载目录的测试
  • 创建测试文件 echo "file1" >/tmp/test.txt
  • 启动nginx容器并且挂载硬盘 docker run -tid --name test1 -v /tmp:/test1 nginx
  • 进入容器查看文件是否存在
3.1.2 挂载文件的测试
  • 创建测试文件 echo "file" > /tmp/test.txt
  • 启动nginx容器并且挂载硬盘 docker run -itd --name test2 -v /tmp/test.txt:/test/file/test.sh nginx
  • 进入容器查看文件是否存在
3.2 数据卷容器实战
3.2.1 创建数据卷
  • 创建宿主机的目录 mkdir /data
  • 创建vol-test容器 docker create -v /data:/data --name vol-test nginx
3.2.2 挂载数据卷
  • 挂载数据卷 docker run --volumes-from vol-test -d --rm --name vc-test1 nginx
  • 挂载数据卷 docker run --volumes-from vol-test -d --rm --name vc-test2 nginx
3.2.3 确认效果
  • 进入vc-test1,操作数据卷容器
  • 进入vc-test2,确认数据卷
  • 回到宿主机查看/data/目录

4. 备份还原

4.1 基础知识
4.1.1 需求
  • 基于数据卷和数据卷容器知识,实现容器应用内部的数据备份还原实践。
4.1.3 数据备份方案
  1. 创建一个挂载数据卷容器的容器。
  2. 挂载宿主机本地目录作为备份数据卷。
  3. 将数据卷容器的内容备份到宿主机本地目录挂载的数据卷中。
  4. 完成备份操作后销毁刚创建的容器以及关联的容器卷。
4.1.4 数据恢复方案
  1. 创建一个新的数据卷容器。
  2. 创建一个新容器,挂载数据卷容器,同时挂载本地的备份目录作为数据卷。
  3. 将要恢复的数据解压到容器中。
  4. 完成还原操作后销毁刚创建的容器以及关联的容器卷。
4.2 备份实践
4.2.1 查看原来的数据卷容器
  • 原来创建,参考小节创建:3.2.1、创建数据卷
4.2.2 备份操作
  • 创建备份的目录 mkdir /backup
  • 创建备份的容器,并且挂载/backup,然后执行备份压缩至/data
    • docker run --rm --volumes-from vol-test -v /backup:/backup nginx tar zcf /backup/data.tar.gz /data
  • 验证操作
4.3 还原实践
4.3.1 删除vc-test1的数据
  • 删除vc-test1的数据
4.3.2 还原
  • 恢复数据
    • docker run --rm --volumes-from vol-test -v /backup:/backup nginx tar xf /backup/data.tar.gz -C /
  • vc-test1容器查看

这种结构清晰地展示了文档的主要内容,包括数据管理的概念、命令、实战操作以及备份还原的基础知识和实践步骤。

相关推荐
小雪_Snow6 小时前
CentOS 7 测试 docker 镜像源
docker·centos
wan_da_ren9 小时前
Docker安装Elasticsearch9.2.1与Kibana9.2.1 保姆教程(带验证版)
运维·docker·jenkins
Hellc0079 小时前
Docker部署BaGet私有NuGet服务器:从入门到备份恢复完整指南 二
服务器·docker·eureka
t***31659 小时前
Docker 之mysql从头开始——Docker下mysql安装、启动、配置、进入容器执行(查询)sql
sql·mysql·docker
爱喝矿泉水的猛男11 小时前
ssh远程访问另一台windows(可扩展到docker环境)
docker·ssh·zerotier
gggg远12 小时前
docker详解
运维·docker·容器
ALex_zry14 小时前
Consul全方位入门指南:第二阶段—— 实操。Consul核心功能与项目集成
运维·docker·微服务·云原生·架构
热爱学习的小怪兽15 小时前
Docker容器的一些总结
运维·docker·容器
❀͜͡傀儡师15 小时前
Docker一键部署Nexus Terminal,高颜值SSH新体验
docker·容器·ssh
TH_117 小时前
腾讯云-(10)-宝塔面板-Docker下安装Elasticsearch
elasticsearch·docker·容器