Docker数据管理,防止删库跑路?

本文涉及的产品
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
简介: 1.容器退出后会处于终止 (exited)状态,此时可以通过docker ps -a查看,其中数据不会丢失,还可以通过docker start来启动,只有删除容器才会清除数据。 2.容器有一个专门的读写层,会保存操作的记录。就算是docker commit保存的镜像也没有真正修改文件系统。 3.为了保证容器删除后信息一定能够保存(特别是对于数据库的容器),方便后续恢复,我们可以将容器内的数据信息拷贝到宿主机上保存一份。

📢身为新时代的网络工程师,传统的路由交换已经满足不了日常。SDN、网络自动化、虚拟化、容器化的出现已经慢慢的代替了传统的数据通信。NetDevOps更是要求现代的网络工程师让编程和自动化成为日常的口袋技能。这个趋势下,我们不得不让自己有闪光点,不然迟早会被淘汰!🤪

📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

📢未来很长,值得我们全力奔赴更美好的生活✨

📢往期精彩

👉Docker简介

👉Docker架构

👉Docker命令

1️⃣数据管理的目的

1.容器退出后会处于终止 (exited)状态,此时可以通过docker ps -a查看,其中数据不会丢失,还可以通过docker start来启动,只有删除容器才会清除数据。

2.容器有一个专门的读写层,会保存操作的记录。就算是docker commit保存的镜像也没有真正修改文件系统。

3.为了保证容器删除后信息一定能够保存(特别是对于数据库的容器),方便后续恢复,我们可以将容器内的数据信息拷贝到宿主机上保存一份。

2️⃣数据卷

1.容器存放数据的目录,也就是数据卷,一般在Dockerfile中有所定义(不是所有的都定义了)。以PSQL为例子,在Dockerfile中可以看到,所以在我们使用此镜像生成容器的时候,不用再手动指定。

image.png

2.使用inspect查看psql的容器,可以看到如下信息。其中设置的容器内的目录的内容被映射到了宿主机上随机产生的目录上。

image.png

3.进入容器向宿主机映射的目录,可以看到如下容器内映射出来数据信息:

image.png

4.相关命令:

  • docker volume ls:查看宿主机上容器所有数据卷挂载出来的信息。
    image.png
  • docker volume rm xxxx(数据卷名称):删除指定的数据卷挂载信息。
  • docker volume inspect xxxx(数据卷名称):查看卷的信息信息。

image.png

3️⃣匿名挂载

定义:据卷挂载出来路径自动产生,其中名称为随机产生的ID。

image.png

命令:

docker run -it -v /路径 --name xxx(容器名) yyy(镜像名称)。其中 /路径为容器内数据卷的位置。

举例:

docker run -it -v /Data/prin --name prin/centos centos。将容器内数据数据卷/Data/prin,挂载到宿主机/var/lib/docker/volume/<id>/_data下。

4️⃣具名挂载

定义:

数据卷挂载出来的名称或者绝对路径由由创建者指定。

情况1:给出容器的名称而代替随机产生的ID。

概述:宿主机映射出来的目录中本来为随机的,现在替换为具体的名称。

image.png

命令:

docker run -it -v xxx(名称):/路径 --name xxx(容器名) yyy(镜像名称)

举例:

docker run -it -v prin_centos:/Data/prin --name prin/centos centos。将容器内数据数据卷/Data/prin,挂载到宿主机/var/lib/docker/volume/prin_centos/_data下。

情况2:给出映射的绝对路径。

概述:将数据卷内的信息挂载到给出的绝对路径下。

image.png

命令:

docker run -it -v /路径1:/路径2 --name xxx(容器名) yyy(镜像名称)

举例:

docker run -it -v /Docker_data/centos:/Data/prin --name prin/centos centos。将容器内数据数据卷/Data/prin,挂载到宿主机/Docker_data/centos下。

5️⃣权限控制

概述:可以设置容器对数据卷为只读(默认是读写),宿主机为读写。

image.png

命令:

docker run -it -v /Docker_data/Centos(具体路径):/Date/prin:ro(仅读) --name prin/centos(容器名) centos。其中容器内为只读目录,宿主机为读写目录。

6️⃣同步卷

概述:将多个容器的数据卷和宿主机的同一个目录进行同步。

image.png

方法一:

原理:在容器run的时候,设置挂载为同一个目录。

容器1:docker run -it -v /Docker_data/Centos/:/Data/prin --name prin_centos-1 centos

容器2:docker run -it -v /Docker_data/Centos/:/Data/prin --name prin_centos-2 centos

方法二:

原理:使用–volume-from同步卷。

命令:

docker run it --name prin-centos-1 --volumes-from prin-centos centos。prin-centos-1容器直接使用prin-centos的数据卷。

7️⃣容器恢复

当容器被删除后,其数据还保存在宿主机挂载的目录下,后续重新通过镜像生成容器的时候,再将数据卷挂载在这个目录下即可。

8️⃣可以这样理解

卷:容器的持久化和同步操作,实现容器间数据共享,通过卷将dockers中的数据同步到本地,容器内将目录自动同步到Linux中——双向绑定。防止删除docker导致数据丢失。


image.pngimage.pngimage.pngimage.pngimage.pngimage.png


相关实践学习
MySQL基础-学生管理系统数据库设计
本场景介绍如何使用DMS工具连接RDS,并使用DMS图形化工具创建数据库表。
相关文章
|
1月前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
146 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
1月前
|
关系型数据库 数据管理 应用服务中间件
【赵渝强老师】Docker的数据持久化
在生产环境中使用Docker时,为了实现数据的持久化和共享,可以通过数据卷(Data Volumes)和数据卷容器(Data Volume Containers)两种方式来管理数据。数据卷是一个独立于容器的挂载目录,可以跨多个容器共享和重用。数据卷容器则是一种特殊容器,用于维护数据卷,便于数据迁移和共享。本文通过示例详细介绍了这两种方法的使用步骤。
|
2月前
|
存储 Kubernetes Docker
|
2月前
|
存储 安全 数据管理
Docker中实现数据持久化
【10月更文挑战第8天】
55 1
|
2月前
|
存储 数据库 Docker
|
2月前
|
存储 安全 Docker
docker中数据持久化(Volumes)
【10月更文挑战第3天】
72 4
|
2月前
|
存储 Kubernetes 数据库
docker数据持久化问题
【10月更文挑战第4天】
37 2
|
2月前
|
关系型数据库 MySQL 数据库
使用Docker部署的MySQL数据库,数据表里的中文读取之后变成问号,如何处理?
【10月更文挑战第1天】使用Docker部署的MySQL数据库,数据表里的中文读取之后变成问号,如何处理?
78 3
|
3月前
|
存储 数据管理 应用服务中间件
Docker的数据管理实战篇
关于Docker数据管理实战的教程,涵盖了Docker数据卷的使用、特点、场景以及数据卷容器的概念和应用。
76 13
Docker的数据管理实战篇
|
4月前
|
存储 Docker 容器
在Docker中,容器退出后,通过docker ps命令查看不到,数据会丢失么?
在Docker中,容器退出后,通过docker ps命令查看不到,数据会丢失么?

热门文章

最新文章