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

举报
新网工李白 发表于 2021/09/09 23:05:45 2021/09/09
【摘要】 📢身为新时代的网络工程师,传统的路由交换已经满足不了日常。SDN、网络自动化、虚拟化、容器化的出现已经慢慢的代替了传统的数据通信。NetDevOps更是要求现代的网络工程师让编程和自动化成为日常的...

📢身为新时代的网络工程师,传统的路由交换已经满足不了日常。SDN、网络自动化、虚拟化、容器化的出现已经慢慢的代替了传统的数据通信。NetDevOps更是要求现代的网络工程师让编程和自动化成为日常的口袋技能。这个趋势下,我们不得不让自己有闪光点,不然迟早会被淘汰!🤪
📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📢未来很长,值得我们全力奔赴更美好的生活✨
📢往期精彩
👉Docker简介
👉Docker架构
👉Docker命令

1️⃣数据管理的目的

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

2️⃣数据卷

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

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

3.进入容器向宿主机映射的目录,可以看到如下容器内映射出来数据信息:
在这里插入图片描述

4.相关命令:

  • docker volume ls:查看宿主机上容器所有数据卷挂载出来的信息。
    在这里插入图片描述

  • docker volume rm xxxx(数据卷名称):删除指定的数据卷挂载信息。

  • docker volume inspect xxxx(数据卷名称):查看卷的信息信息。

在这里插入图片描述

3️⃣匿名挂载

定义:据卷挂载出来路径自动产生,其中名称为随机产生的ID。
在这里插入图片描述

命令:
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。
概述:宿主机映射出来的目录中本来为随机的,现在替换为具体的名称。
在这里插入图片描述

命令:
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:给出映射的绝对路径。
概述:将数据卷内的信息挂载到给出的绝对路径下。
在这里插入图片描述

命令:
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️⃣权限控制

概述:可以设置容器对数据卷为只读(默认是读写),宿主机为读写。
在这里插入图片描述

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

6️⃣同步卷

概述:将多个容器的数据卷和宿主机的同一个目录进行同步。
在这里插入图片描述

方法一:
原理:在容器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导致数据丢失。

复习举例
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

文章来源: libai.blog.csdn.net,作者:新网工李白,版权归原作者所有,如需转载,请联系作者。

原文链接:libai.blog.csdn.net/article/details/117995671

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。