Docker容器数据卷
1.Docker容器数据卷是什么
注意(坑): 容器卷记得加入 --privileged=true
为什么: docker挂载主目录访问如果出现cannot open directory.:Permission denied
解决办法: 在挂在目录后多加一个–privileged=true参数即可
如果是CentOS7安全模块会比之前系统版本加强,不安全的会先禁止,所以目录挂载的情况会被默认为不安全的行为
在SELinux里面挂载目录被禁止掉了,如果要开启,我们一般使用–privileged=true命令,扩大容器的权限解决挂载目录没有权限的问题,也即使用该参数,container内的root拥有真正的root权限,否则,container的内部root只是外部的一个普通用户权限
上一讲中的命令
docker run -d -p 5000:5000 -v /asule/myregistry/:/tmp/registry --privileged=true registry
-v:要添加自定义的容器卷
:左边是宿主机的路径
:右边是容器内的路径
–privileged=true:是放开权限
目的是为了给容器中的数据做备份
Docker容器数据卷类似于我们Redis里面的rdb和aof文件
-
卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性:卷的设计目的就是
数据的持久化
,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷 -
通俗易懂的话就是:备份
-
运行一个带有容器卷存储功能的容器实例
命令:
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
注意: 宿主机的绝对路径
-
将运用和运行的环境打包镜像,run后形成容器实例运行,但是我们对数据的要求希望是持久化的
-
docker容器产生的数据,如果不备份,那么当容器实例删除后,容器内的数据也自然就没有了
-
为了能够保存数据在docker中我们使用Docker容器数据卷
特点:
- 数据卷可在容器之间共享或重用数据
- 卷中的更改可以直接实时生效
- 数据卷中的更改不会包含在镜像的更新中
- 数据卷的生命周期一直持续到没有容器使用它为止
2.宿主机和容器卷挂载
2.1容器卷和主机互联互通
命令:
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
默认是rw读写规则
docker内的数据保存进宿主机的磁盘中
docker
host
docker中创建,host中修改
docker
host
图示:
2.2.查看数据卷是否挂载成功
命令:
docker inspect 容器ID
2.3互联互通时容器宕机
停止docker容器中的ubuntu
host中增加c.txt
重新启动刚才的ubuntu容器
问题: 恢复的容器中是否会同步c.txt
解答:会
2.4小结
- docker修改,主机同步获得
- 主机修改,docker同步获得
- docker容器stop,主机修改,docker重启且同步获得
3.容器卷的读ro和写rw规则和添加映射说明
命令:
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:rw 镜像名
默认同上案例,就是rw
3.1容器实例内部被限制
只能读不能写 加:ro
read only(ro):只能读不能写
命令:
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
初始化容器卷
初始主机状态
主机创建文件
容器内部写文件是不允许的,只读模式
3.2小结
宿主机写入内容,可以同步给容器内,容器可以读取到
4.容器卷之间的继承
-
容器1完成和宿主机的映射
host
容器
-
容器2继承容器1的卷规则
命令:
docker run -it --privileged=true --volumes-from 父类 --name u2 ubuntu
-v的全名就是–volumes-form主机上和容器上的创建的文件都有
u2容器中新建u2data.txt
主机中
容器中
退出u1
问题:u1已经停止了,那u2和主机是什么联系?
答案:u1和u2是两个不同的容器,u2继承的是u1挂载路径的规则,两个容器是独立的,其中一个宕机了并没有什么关系,另一个容器还是与主机相互联通的退出u1只剩u2
主机创建host2.txt文件
观察u2
结论:发现u2中还是有host2.txt
问题:这个时候u1恢复,会不会有host2.txt呢?
回答:有的,一主二从只要恢复就会有