【docker笔记】Docker容器数据卷

Docker容器数据卷

卷就是目录或者文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性

卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此docker不会在容器删除是删除其挂载的数据卷

一句话:有点类似我们Redis里面的rdb和aof文件,将docker容器内的数据保存进宿主机的磁盘中

运行一个带有容器卷存储功能的容器实例命令

bash 复制代码
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名

容器数据卷作用

将运用与运行的环境打包镜像,run后形成容器实例运行 ,但是我们对数据的要求希望是 持久化的

Docker容器产生的数据,如果不备份,那么当容器实例删除后,容器内的数据自然也就没有了。

为了能保存数据在docker中我们使用卷。

特点:

1、数据卷可在容器之间共享或重用数据

2、卷中的数据可以直接实时生效

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

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

宿主容器之间映射添加容器卷

如果宿主机的路径不存在,docker会自动创建路径,前提是权限需要放开

bash 复制代码
docker run -it --privileged=true -v /tmp/myHostData:/tmp/myDockerData --name=u1 ubuntu /bin/bash

查看数据卷是否挂载成功

bash 复制代码
docker inspect 容器id

docker修改,主机同步获得

主机修改,docker同步获得

docker容器stop,主机修改,docker容器重启数据同步

完成双线程数据互通

读写规则映射添加说明

上一步的操作时默认操作,默认同时支持读和写

bash 复制代码
docker run -it --privileged -v /tmp/host_data:/tmp/docker_data:rw ubuntu /bin/bash

如容器实例内部被限制,只能读取不能写--ro:read only

bash 复制代码
docker run -it --privileged -v /tmp/host_data:/tmp/docker_data:ro ubuntu /bin/bash

卷的继承和共享

容器1完成与宿主机的映射

bash 复制代码
docker run -it --privileged -v /tmp/host_data:/tmp/docker_data:rw ubuntu

容器2继承容器1的卷规则

bash 复制代码
docker run -it --privileged=true -v --volumes-from 父类(容器名称/id) --name="" 镜像名

容器会共享(两个容器和一个主机)

继承过后容器1什么样容器2就是什么样

容器1挂了对容器2没有影响,容器1重连之后依然是互通的

挂载容器卷记得加入 --privileged=true

原因 Docker挂载主机目录访问 如果出现cannot open directory : Permission denied

解决办法:在挂载目录后多加一个--privileged=true参数即可

如果是CentOS7安全模块会比之前系统版本加强,不安全的会先禁止,所以目录挂载的情况被默认为不安全的行为,在SELinux里面挂载目录被禁止掉了,如果要开启,我们一般使用--privileged=true命令,扩大容器的权限解决挂载目录没有权限的问题,也即
使用该参数,container内的root拥有真正的root权限,否则,container内的root只是外部的一个普通用户权限

相关推荐
CAFEBABE 346 小时前
linux离线安装docker并启动
linux·docker·eureka
yuguo.im9 小时前
Docker 两大基石:Namespace 和 Cgroups
运维·docker·容器
会飞的土拨鼠呀9 小时前
docker部署 outline(栗子云笔记)
笔记·docker·容器
Jelly-小丑鱼10 小时前
Linux搭建syslog日志服务器
linux·服务器·docker·日志服务器·syslog服务器
没有bug.的程序员10 小时前
高频IO服务优化实战指南
java·jvm·spring·容器
lisanmengmeng12 小时前
docker 方式安装部署禅道zentao(五)
运维·docker·容器
程序员老赵12 小时前
AdguardHome Docker 容器化部署指南
docker·dns
露临霜13 小时前
Docker安装nginx
nginx·docker·容器
CAFEBABE 3415 小时前
安装完docker之后怎么使用
运维·docker·容器
测试人社区—小叶子16 小时前
测试开发面试高频“灵魂八问”深度解析与应答策略
网络·人工智能·测试工具·云原生·容器·面试·职场和发展