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

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

前言

在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的挂载规则

相关文章
|
2天前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
19 6
|
2天前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
13 5
|
2天前
|
开发框架 安全 开发者
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。本文探讨了 Docker 在多平台应用构建与部署中的作用,包括环境一致性、依赖管理、快速构建等优势,以及部署流程和注意事项,展示了 Docker 如何简化开发与部署过程,提高效率和可移植性。
19 3
|
2天前
|
存储 安全 数据安全/隐私保护
Docker 容器化应用管理更加高效,但数据安全和业务连续性成为关键。
在数字化时代,Docker 容器化应用管理更加高效,但数据安全和业务连续性成为关键。本文探讨了 Docker 应用的备份与恢复策略,涵盖备份的重要性、内容、方法及常见工具,制定备份策略,恢复流程及注意事项,并通过案例分析和未来趋势展望,强调备份与恢复在保障应用安全中的重要性。
13 2
|
7天前
|
Kubernetes Linux 开发者
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
34 5
|
9天前
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
|
8天前
|
开发者 Docker Python
从零开始:使用Docker容器化你的Python Web应用
从零开始:使用Docker容器化你的Python Web应用
23 1
|
14天前
|
持续交付 开发者 Docker
Docker容器化技术实战指南
Docker容器化技术实战指南
31 1
|
5天前
|
存储 Cloud Native 开发者
深入探索容器化技术——Docker的实战应用
深入探索容器化技术——Docker的实战应用
16 0
|
13天前
|
Java Docker 微服务
利用Docker容器化部署Spring Boot应用
利用Docker容器化部署Spring Boot应用
39 0