首页 > 其他分享 >docker数据持久化

docker数据持久化

时间:2022-11-21 17:56:01浏览次数:48  
标签:容器 持久 -- data volume docker 数据

百度网盘链接:https://pan.baidu.com/s/15t_TSH5RRpCFXV-93JHpNw?pwd=8od3  提取码:8od3

5 docker数据持久化

5.1 docker容器的数据管理

5.1.1 Docker容器的数据卷

数据卷是经过特殊设计的目录,可以绕过联合文件系统(UFS),为一个或者多个容器提供访问,数据卷设计的目的,在于数据的永久存储,它完全独立于容器的生存周期,因此,docker不会在容器删除时删除其挂载的数据卷,也不会存在类似的垃圾收集机制,对容器引用的数据卷进行处理,同一个数据卷可以只支持多个容器的访问。

5.1.2 数据卷的特点

1.数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,这些数据会被拷贝到新初始化的数据卷中

2.数据卷可以在容器之间共享和重用

3.可以对数据卷里的内容直接进行修改

4.数据卷的变化不会影像镜像的更新

5.卷会一直存在,即使挂载数据卷的容器已经被删除

5.2 数据卷的使用

5.2.1 为容器添加数据卷

# docker run --name volume -v ~/datavolume:/data -itd centos  /bin/bash

注:~/datavolume为宿主机目录,/data为docker启动的volume容器的里的目录,这样在宿主机的/datavolume目录下创建的数据就会同步到容器的/data目录下

 

5.2.2 为数据卷添加访问权限

# docker run --name volume1 -v ~/datavolume1:/data:ro -itd centos  /bin/bash

添加只读权限之后在docker容器的/data目录下就不能在创建文件了,为只读权限;在宿主机下的/datavolume1下可以创建东西

 

5.2.3 使用dockerfile构建包含数据卷的镜像

dockerfile指令:volume[“/data”]

# vim dockerfile

FROM centos

VOLUME ["/datavolume3","/datavolume6"]

CMD /bin/bash

 

使用如下构建镜像

# docker build -t="volume" .

启动容器

# docker run --name volume-dubble -it volume

会看到这个容器下有两个目录,/datavolume3和/datavolume6

5.3 Docker的数据卷容器

5.3.1 什么是数据卷容器

命名的容器挂载数据卷,其他容器通过挂载这个容器实现数据共享,挂载数据卷的容器,就叫做数据卷容器

5.3.2 挂载数据卷容器的方法

docker run --volumes-from [container name]

# docker run --name data-volume -itd volume

volume这个镜像是上面创建的带两个数据卷/datavolume3和/ddatavolume6的镜像

# docker exec -it data-volume /bin/bash(进入到容器中)

$ touch /datavolume6/lucky.txt

退出容器exit

 

创建一个新容器挂载刚才data-volume这个容器创建的数据卷

# docker run --name data-volume2 --volumes-from  data-volume -itd centos /bin/bash

进入到新创建的容器

# docker exec -it data-volume2 /bin/bash

cd /datavolume6可以看见有刚才在上一个容器创建的文件lucky.txt

5.4 docker数据卷的备份和还原

5.4.1 数据备份方法

docker run  --volumes-from [container name] -v $(pwd):/backup centos tar czvf /backup/backup.tar [container data volume]

例:

# docker run --volumes-from data-volume2  -v  /root/backup:/backup --name datavolume-copy centos tar zcvf /backup/data-volume2.tar.gz /datavolume6

5.4.2 数据还原方法

docker run --volumes-from [container name] -v $(pwd):/backup centos tar xzvf /backup/backup.tar.gz [container data volume]

例:

# docker exec -it data-volume2 /bin/bash

$ cd /datavolume6

$ rm -rf lucky.txt

# docker run --volumes-from data-volume2 -v /root/backup/:/backup centos tar zxvf /backup/data-volume2.tar.gz -C /datavolume6

# docker exec -it data-volum2 /bin/bash

$ cd /datavolum6  可以看到还原后的数据

标签:容器,持久,--,data,volume,docker,数据
From: https://www.cnblogs.com/KrillLiszt/p/16912160.html

相关文章

  • 动态规划——数据结构与算法学习
    动态规划动态规划的原理其实也是将大问题划分为小问题,从而一步步获取最优解,但是适用于动态规划求解的问题,子问题往往不是独立的,是具有相互关联性。背包问题有一个背包,容......
  • docker容器互联
    百度网盘链接:https://pan.baidu.com/s/15t_TSH5RRpCFXV-93JHpNw?pwd=8od3 提取码:8od36docker容器互联6.1docker容器的网络基础6.1.1docker01.安装docker的时候,会......
  • 1、Docker最新入门教程-Docker概述
    1.Docker概述Docker是一个用于开发、运输和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开,以便您可以快速交付软件。使用Docker,您可以像管理应用程......
  • mybatis查询结果封装javabean属性时属性名与数据库字段不同都能封装????
    问题现象:通过mybatis查询数据库中的表记录,封装成javaBean,本来属性名和字段名不相同的情况下,属性最后应该注入null的,结果能够正常注入。javaBean:publicclassEmplo......
  • docker、nginx、jar
    windows修改nginx配置文件后,重启nginx命令之前每次改配置文件,为了让修改后的配置生效都要在任务栏中找nginx杀进程,太麻烦了nginx-sreloadjava-jar参数不生效,是因......
  • Docker run 命令
    dockerrun:创建一个新的容器并运行一个命令语法dockerrun[OPTIONS]IMAGE[COMMAND][ARG...]OPTIONS说明:-astdin: 指定标准输入输出内容类型,可选STDIN/STDOUT......
  • Mysql数据库连接失败SSLException: Unsupported record version Unknown-0.0
    问题描述:mysql版本:5.7.27jdk版本:1.8.0_201tomcat日志中报错,显示连接数据库失败,报错信息如下:Thelastpacketsuccessfullyreceivedfromtheserverwas152millisecon......
  • python数据合并 concat方法的运用案例
    案例背景:三个员工分工输入数据,格式一致,列标题一致,存在唯一标识。现在需要将三个员工输入的数据,合并到一个表格里。假设,员工甲输入的数据如下:假设,员工乙输入的数据如下......
  • docker-compose.yml 使用说明
    docker-compose.yml结构docker-compose.yml文件分为三个主要部分:services、networks、volumes.。services主要用来定义各个容器。networks定义需要使用到的net......
  • docker保存、导入、导出和加载tar及其tar.gz
    一、操作tar包1、save和load命令save命令dockersave[options]images[images...]示例:dockersave-onginx.tarnginx:latest或dockersave>nginx.tarnginx:la......