docker<容器数据卷-v>对容器内数据持久化详解(备份)

 更新时间:2023年03月10日 14:53:00   作者:阿演  
容器的数据持久化主要是指宿主机与容器,以及容器与容器之间进行数据交互,下面这篇文章主要给大家介绍了关于docker<容器数据卷-v>对容器内数据持久化的相关资料,需要的朋友可以参考下

前言

在docker创建容器,挂载目录的时候,可能会出现目录无法访问无法打开的问题(cannot open directory .: Permission denied)

只需要加一个 --privileged=true 参数即可,加上这个参数代表是以root用户权限进入容器的,不加就是以普通用户权限进入容器的

例如,test镜像创建一个容器t1

docker run -d -p 5555:5555 -v /etc/config:/tmp/config --privileged=true --name t1 test

正文

容器数据卷,也就是把容器内部目录挂载到宿主机目录(前言中说的挂载文件 -v ),独立于容器的生命周期之外,可以防止容器销毁而丢失文件

特点:

1、可以在多个容器之间共享或重用

2、数据卷中的更改可以实时生效

3、数据卷中的更改不会包含在镜像的更新中

4、数据卷的生命周期一直持续到没有容器使用

例如,挂载本机/tmp/data目录到容器中的/tmp/docker_data目录(如果本机没有/tmp/data目录,docker会自行创建)

docker run -it --privileged=true -v /tmp/data:/tmp/docker_data --name t1 test /bin/bash

-it进入容器,在/tmp/docker_data目录下创建一个test.txt文件,退出容器到宿主机的挂载目录下,可以看到已经有一个test.txt文件了,反之在宿主机目录下更改或创建文件,容器内目录也同步生效

实现了容器内数据持久化到宿主机,并且双方修改实时生效

如果在容器停止运行的情况下,修改宿主机挂载目录内容,容器启动后,同样会读取最新数据

如果忘记容器挂载到宿主机哪个目录了,可以使用docker inspect命令查看容器信息

docker inspect 容器id

数据卷读写规则

像上面那个案例,默认是可读可写的,也就相当于在后面加了一个rw,即:

docker run -it --privileged=true -v /tmp/data:/tmp/docker_data:rw --name t1 test /bin/bash

如果需要容器内只读,可以改成ro,即

docker run -it --privileged=true -v /tmp/data:/tmp/docker_data:ro --name t1 test /bin/bash

此时在宿主机修改的内容可以同步到容器内,但是容器内是只读的,如果继续在容器内操作,会提示Read-only file system

数据卷的继承和共享

如果想要新创建一个容器t2,也使用t1的数据卷,只需要使用--volumes-from命令继承t1即可

docker run -it --privileged=true --volumes-from t1 --name t2 test /bin/bash

此时t2也就跟t1一样挂载主机目录了,t2里面也可以看到/tmp/docker_data目录下的内容,并实时更新

如果t1停了,对t2是没有影响的,因为t2是继承的t1的挂载规则

总结

到此这篇关于docker<容器数据卷-v>对容器内数据持久化文章就介绍到这了,更多相关docker容器内数据持久化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • Docker-compose部署gitlab的方法步骤

    Docker-compose部署gitlab的方法步骤

    这篇文章主要介绍了Docker-compose部署gitlab的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • docker搭建minio服务器,解决内网穿透后外网无法访问

    docker搭建minio服务器,解决内网穿透后外网无法访问

    这篇文章主要介绍了docker搭建minio服务器,解决内网穿透后外网无法访问的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • 使用docker搭建嵌入式Linux开发环境

    使用docker搭建嵌入式Linux开发环境

    本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-08-08
  • docker-compose如何定义容器的ip

    docker-compose如何定义容器的ip

    这篇文章主要介绍了docker-compose如何定义容器的ip问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Docker安装部署分布式数据库 OceanBase的详细过程

    Docker安装部署分布式数据库 OceanBase的详细过程

    这篇文章主要介绍了Docker安装部署分布式数据库 OceanBase,快速的体验 OceanBase 的自动化部署过程,及了解 OceanBase 集群安装成功后的目录特点和使用方法,需要的朋友可以参考下
    2022-06-06
  • Docker容器磁盘占满的一些情况汇总

    Docker容器磁盘占满的一些情况汇总

    这篇文章主要给大家介绍了关于Docker容器磁盘占满的一些情况,文中通过示例代码介绍的非常详细,对大家学习或者使用Docker具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • 使用docker的python基础镜像时要指定patch版本原理

    使用docker的python基础镜像时要指定patch版本原理

    这篇文章主要为大家介绍了使用docker的python基础镜像时要指定patch版本原理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • Docker Base Image自己创建具体实现

    Docker Base Image自己创建具体实现

    这篇文章主要介绍了Docker Base Image创建具体实现的相关资料,这里提供了详细的具体步骤,需要的朋友可以参考下
    2016-11-11
  • 使用Dockerfile创建自定义镜像的详细步骤

    使用Dockerfile创建自定义镜像的详细步骤

    使用 Dockerfile 创建自定义镜像的过程非常清晰,通常包括定义基础镜像、安装依赖、复制代码、设置环境变量和启动命令等步骤,下面详细讲解从零创建自定义镜像的完整流程,需要的朋友可以参考下
    2025-06-06
  • 搭建一个私有的Docker registry教程

    搭建一个私有的Docker registry教程

    这篇文章提供了一个非常务实的方法来处理搭建私有Docker registry时出现的各种错综复杂的情况。我们将会使用一个运行于DigitalOcean(之后简称为DO)的非常小巧的512MB VPS 实例
    2016-09-09

最新评论